JavaScript數(shù)據(jù)結(jié)構(gòu)中串的表示與應(yīng)用實(shí)例
本文實(shí)例講述了JavaScript數(shù)據(jù)結(jié)構(gòu)中串的表示與應(yīng)用。分享給大家供大家參考,具體如下:
類似于線性表的順序存儲(chǔ)結(jié)構(gòu),用一組地址連續(xù)的存儲(chǔ)單元存儲(chǔ)串值的字符序列。下面我們以串聯(lián)接為例,講解一下這種存儲(chǔ)結(jié)構(gòu)時(shí)串的操作。JavaScript自帶有concat方法,該方法返回字符串值,該值包含了兩個(gè)或多個(gè)提供的字符串的連接。
其實(shí)思路很簡(jiǎn)單,就是將第二個(gè)串拼接在第一個(gè)串后面,代碼如下
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <script type="text/javascript"> function Concat(a,b){ var t=new Array(); var a_len=a.length, b_len=b.length; for(var i=0;i<a_len;i++){ t.push(a[i]); } for(var i=0;i<b_len;i++){ t.push(b[i]); } return t; } var t=Concat("1234","abcd"); alert(t);//1,2,3,4,a,b,c,d </script> </body> </html>
從上面的算法可以看出,在順序存儲(chǔ)結(jié)構(gòu)中,實(shí)現(xiàn)串操作的原操作其實(shí)就是字符序列的復(fù)制。操作的時(shí)間復(fù)雜度是基于復(fù)制的字符序列的長(zhǎng)度的。這里我舉的例子是堆分配存儲(chǔ)的,還有一種是定長(zhǎng)存儲(chǔ)。這兩者有什么區(qū)別呢?
定長(zhǎng)分配就是在指定串的時(shí)候要指定一個(gè)長(zhǎng)度限制,這樣超過(guò)的部分就會(huì)被截??;而堆分配存儲(chǔ)的存儲(chǔ)空間是在程序執(zhí)行過(guò)程中動(dòng)態(tài)分配的。比如我定義一個(gè)array卻不指定長(zhǎng)度,其實(shí)就是默認(rèn)采用的堆分配存儲(chǔ)。
由于數(shù)組的分配是定義的時(shí)候就要分配,但是要是分配的少了就會(huì)出現(xiàn)程序的運(yùn)行和想象的不一樣或者是出現(xiàn)錯(cuò)誤,要是分配的多了而用的少了又會(huì)出現(xiàn)資源的浪費(fèi),這個(gè)在大型的程序中是很浪費(fèi)的,所以就要動(dòng)態(tài)分配,動(dòng)態(tài)分配在使用的時(shí)候再分配,知道要分配多少,這樣會(huì)使得空間的利用率比較高。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之模式匹配字符串定位問(wèn)題
- C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)字符串分割的實(shí)例
- C語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)串(堆分配存儲(chǔ)表示法)實(shí)例詳解
- C數(shù)據(jù)結(jié)構(gòu)中串簡(jiǎn)單實(shí)例
- C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)中串的模式匹配
- C++語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 串的基本操作實(shí)例代碼
- 數(shù)據(jù)結(jié)構(gòu)基本概念和術(shù)語(yǔ)之位字節(jié)、字、位串、元素等
- C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之動(dòng)態(tài)分配實(shí)現(xiàn)串
相關(guān)文章
JavaScript利用split函數(shù)按規(guī)定截取字符串(獲取郵箱用戶名)
這個(gè)其實(shí)就是利用了js的split函數(shù),以@分割數(shù)組,一般用這個(gè)的地方不多,但這個(gè)思路應(yīng)用的比較廣泛。推薦大家學(xué)習(xí)。2009-12-12D3.js中data(), enter() 和 exit()的問(wèn)題詳解
相信大多數(shù)人對(duì)D3.js并不陌生。這是一個(gè)由紐約時(shí)報(bào)可視化編輯 Mike Bostock與他斯坦福的教授和同學(xué)合作開(kāi)發(fā)的數(shù)據(jù)文件處理的JavaScript Library,全稱叫做Data-Driven Documents,在d3.js中data(), enter() 和 exit()比較常見(jiàn),下面給大家就這方面的知識(shí)給大家詳解2015-08-08如何解決js函數(shù)防抖、節(jié)流出現(xiàn)的問(wèn)題
這篇文章主要介紹了如何解決js函數(shù)防抖、節(jié)流出現(xiàn)的問(wèn)題。SyntheticEvent對(duì)象是通過(guò)合并得到的。 這意味著在事件回調(diào)被調(diào)用后,SyntheticEvent 對(duì)象將被重用并且所有屬性都將被取消。 因此,您無(wú)法以異步方式訪問(wèn)該事件。,需要的朋友可以參考下2019-06-06javascript過(guò)濾數(shù)組重復(fù)元素的實(shí)現(xiàn)方法
這篇文章主要介紹了javascript過(guò)濾數(shù)組重復(fù)元素的實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下2017-05-05el-table解決過(guò)濾導(dǎo)致選中的丟失的問(wèn)題
在使用Element UI的el-table組件時(shí),可能會(huì)遇到過(guò)濾數(shù)據(jù)后選中狀態(tài)丟失的問(wèn)題,解決這一問(wèn)題的關(guān)鍵在于利用Vue的計(jì)算屬性和事件綁定功能,感興趣的朋友跟隨小編一起看看吧2024-09-09優(yōu)化 JavaScript 代碼的方法小結(jié)
客戶端腳本能讓你的應(yīng)用更加地動(dòng)態(tài)和活躍, 但是瀏覽器對(duì)代碼的解析可能造成效率問(wèn)題, 而這種性能差異在客戶端之間也不盡相同。 這里我們討論和給出一些優(yōu)化你的 JavaScript 代碼的提示和最佳實(shí)踐。2009-07-07