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

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

如果你希望學習redis的話,可以看下這個鏈接 http://www.cnblogs.com/tdws/tag/NoSql/

 

進入正題

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

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

網(wǎng)友評論