儲存多個元素,最常用的資料結構是陣列。但是陣列有個一缺點,從陣列中新增或移除項的成本很高,因為需要移動元素。鍊錶也可以儲存有序的元素集合,但是和陣列不同,鍊錶中的元素在記憶體中不是連續放置的。每個元素儲存本身節點值和下乙個元素的引用,鍊錶的乙個好處在於,新增或移除元素的時候不需要移動其他元素。
ok,開始實現我們的資料結構,骨架如下
function linkedlist() ; //node輔助類
var length = 0;
var head = null;
this.insert = function (pos, ele) {}; //插入
this.removeat = function (pos) {}; //移除
this.indexof = function (ele) {}; //查詢元素
this.isempty = function () {}; //是否為空
this.size = function () {}; //鍊錶元素個數
this.gethead = function () {}; //煉表頭
this.tostring = function () {}; //轉換為字串
}
首先實現向鍊錶尾部追加元素吧:
var node = new node(ele),
current;
if (head == null) else
//將最後一項的next指向 node
current.next = node;
}length++; //更新鍊錶長度
}繼續實現鍊錶插入
this.insert = function (pos, ele) else
node.next = current; //節點的next指向current
previous.next = node; //前乙個節點指向node
length++; //更新陣列長度
}} else
}
鍊錶的移除:
this.removeat = function (pos) else
previous.next = current.next; //前乙個節點指向下乙個節點
}length--; //更新鍊錶長度
return current.val;
} else
}
其他方法就比較簡單了,實現如下:
this.isempty = function ()
this.size = function ()
this.gethead = function ()
this.tostring = function ()
return str.slice(1);
}
js 實現鍊錶
我們通常會在c 這類語言中學習到鍊錶的概念,但是在js中由於我們可以動態的擴充陣列,加之有豐富的原生api。我們通常並不需要實現鍊錶結構。由於突發奇想,我打算用js實現一下 首先我們要建立鍊錶 1 建立鍊錶 2function createlinknode data,pre,next 8this.n...
js實現鍊錶
平時我們使用最多的資料結構應該是陣列,很多東西都可以用陣列來輕鬆實現,但在某些程式語言中,陣列的長度是預先設定好的,想要額外新增元素或者刪除元素是一件比較困難的事。那麼使用鍊錶的話恰恰就解決了這些問題,對於鍊錶來說刪除或新增乙個元素是非常方便的,除了資料的隨機訪問 可以實現但是比較麻煩,比如可以通過...
單向鍊錶JS實現
可以排序,增加,查詢,刪除的單向鍊錶 function linknode key,value function link link.prototype add function key,value var node new linknode key,value if this.count 0 thi...