好多做web開發(fā)的朋友,在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法時(shí)可能比較討厭C和C++,上學(xué)的時(shí)候?qū)戇^的也忘得差不多了,更別提沒寫過的了。但幸運(yùn)的是,你會(huì)JavaScript啊。我想說學(xué)好數(shù)據(jù)結(jié)構(gòu)和基本算法并非是要我們必須要去書寫,算法的工作有專業(yè)的職位專業(yè)的人來做,但是如果你希望走的更高,這些是必不可少的,比如你學(xué)習(xí)Redis,如果hashmap等相關(guān)結(jié)構(gòu)的話,也只能停留在使用的層次上,永遠(yuǎn)和優(yōu)化不能掛鉤。我也是個(gè)一瓶子不滿半瓶子晃悠,和希望快速成長(zhǎng)的伙伴們共同加深印象,共同提高吧。

如果你對(duì)JavaScript OOP還不太了解的話,請(qǐng)移步這兩篇分享:http://www.cnblogs.com/tdws/p/5947693.html    http://www.cnblogs.com/tdws/p/5944254.html

如果你希望學(xué)習(xí)redis的話,可以看下這個(gè)鏈接 http://www.cnblogs.com/tdws/tag/NoSql/

 

進(jìn)入正題

鏈表是一種動(dòng)態(tài)的數(shù)據(jù)結(jié)構(gòu),不同于數(shù)組的是,鏈表分配內(nèi)存空間的靈活性,它不會(huì)像數(shù)組一樣被分配一塊連續(xù)的內(nèi)存。當(dāng)你想在數(shù)組的任意位置,插入一個(gè)新值的時(shí)候,必須對(duì)數(shù)組中的各個(gè)元素進(jìn)行相應(yīng)的位置移動(dòng)才能達(dá)到目標(biāo),開銷顯然是很大的。然而鏈表的靈活性在于它的每個(gè)元素節(jié)點(diǎn)分為兩部分,一部分是存儲(chǔ)元素本身,另一部分是指向下一個(gè)節(jié)點(diǎn)元素的引用,也可以稱為指針,當(dāng)你要插入數(shù)據(jù)時(shí),把上一個(gè)節(jié)點(diǎn)的向下指針指向新數(shù)據(jù)節(jié)點(diǎn),新數(shù)據(jù)節(jié)點(diǎn)的向下指針指向原有數(shù)據(jù)。但是鏈表不像數(shù)組那樣可以直接通過索引立刻定位,只能通過遍歷。

圖畫的可能是亂了點(diǎn),就是想突出一下,鏈表分配內(nèi)存的動(dòng)態(tài)性,你隨時(shí)隨地,都可以增加和刪除,并且內(nèi)存的不連續(xù)性和無索引性。我暫時(shí)給鏈表類定義如下幾個(gè)方法

網(wǎng)友評(píng)論