前面樓主分別討論了數(shù)據(jù)結(jié)構(gòu)棧與隊列的實現(xiàn),當(dāng)時所用的數(shù)據(jù)結(jié)構(gòu)都是用的數(shù)組來進行實現(xiàn),但是數(shù)組有的時候并不是最佳的數(shù)據(jù)結(jié)構(gòu),比如在數(shù)組中新增刪除元素的時候需要將其他元素進行移動,而在javascript中使用spit()方法不需要訪問其他元素。如果你在使用數(shù)組的時候發(fā)現(xiàn)很慢,就可以考慮使用鏈表。
鏈表的概念
鏈表是一種常見的數(shù)據(jù)結(jié)構(gòu)。它是動態(tài)地進行存儲分配的一種結(jié)構(gòu)。鏈表有一個“頭指針”變量,以head表示,它存放一個地址,指向一個元素。每個結(jié)點都使用一個對象的引用指標(biāo)它的后繼,指向另一個結(jié)點的引用叫做鏈。
數(shù)組元素依靠下標(biāo)(位置)來進行引用,而鏈表元素則是靠相互之間的關(guān)系來進行引用。因此鏈表的插入效率很高,下圖演示了鏈表結(jié)點d的插入過程:
刪除過程:
基于對象的鏈表
我們定義2個類,Node類與LinkedList類,Node為結(jié)點數(shù)據(jù),LinkedList保存操作鏈表的方法。
首先看Node類:
1 function Node(element){ 2 this.element = element; 3 this.next = null; 4 }
element用來保存結(jié)點上的數(shù)據(jù),next用來保存指向一下結(jié)點的的鏈接?! ?/p>
LinkedList類:
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式