js實現個鍊錶吧

2022-03-23 10:23:05 字數 1455 閱讀 8021

儲存多個元素,最常用的資料結構是陣列。但是陣列有個一缺點,從陣列中新增或移除項的成本很高,因為需要移動元素。鍊錶也可以儲存有序的元素集合,但是和陣列不同,鍊錶中的元素在記憶體中不是連續放置的。每個元素儲存本身節點值和下乙個元素的引用,鍊錶的乙個好處在於,新增或移除元素的時候不需要移動其他元素。

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...