JS基于對象的鏈表實(shí)現(xiàn)與使用方法示例
本文實(shí)例講述了JS基于對象的鏈表實(shí)現(xiàn)與使用方法。分享給大家供大家參考,具體如下:
鏈表是一種在物理內(nèi)存上不連續(xù)的數(shù)據(jù)結(jié)構(gòu)。原理如下圖所示:

示例代碼:
/*JS實(shí)現(xiàn)一個(gè)基于對象的鏈表*/
function Node(element){
this.element = element;//節(jié)點(diǎn)存儲(chǔ)的元素
this.next = null;//節(jié)點(diǎn)指向的下一個(gè)節(jié)點(diǎn),這里先設(shè)置為空
}
function LList(){
this.head = new Node("head");//生成一個(gè)頭節(jié)點(diǎn)
this.find = find;//在鏈表中找到某個(gè)節(jié)點(diǎn)
this.insert = insert;//在鏈表中某個(gè)元素后面插入某個(gè)節(jié)點(diǎn)元素
this.display = display;//在將鏈表中的節(jié)點(diǎn)元素顯示出來
this.findPrevious = findPrevious;//找到某個(gè)節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)
this.remove = remove;//刪除某個(gè)節(jié)點(diǎn)
}
function remove(item) {
var prevNode = this.findPrevious(item);
if (!(prevNode.next == null)) {
prevNode.next = prevNode.next.next;
}
}
function findPrevious(item) {
var currNode = this.head;
while (!(currNode.next == null) &&
(currNode.next.element != item)) {
currNode = currNode.next;
}
return currNode;
}
function display() {
var currNode = this.head;
var nodestr = "";
while (!(currNode.next == null)) {
nodestr +=" "+currNode.next.element;
currNode = currNode.next;
}
console.log(nodestr);
}
function find(item) {
var currNode = this.head;
while (currNode.element != item) {
currNode = currNode.next;
}
return currNode;
}
function insert(newElement, item) {
var newNode = new Node(newElement);
var current = this.find(item);
newNode.next = current.next;
current.next = newNode;
}
/*測試?yán)?/
var num = new LList();
num.insert("a1","head");
num.insert("b1","a1");
num.insert("c1","b1");
num.display();// a1 b1 c1
num.remove("b1");
num.display();// a1 c1
這里使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼,可得如下運(yùn)行結(jié)果:

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。
- js實(shí)現(xiàn)雙向鏈表互聯(lián)網(wǎng)機(jī)頂盒實(shí)戰(zhàn)應(yīng)用實(shí)現(xiàn)
- JavaScript數(shù)據(jù)結(jié)構(gòu)之雙向鏈表和雙向循環(huán)鏈表的實(shí)現(xiàn)
- JavaScript數(shù)據(jù)結(jié)構(gòu)之雙向鏈表定義與使用方法示例
- JS雙向鏈表實(shí)現(xiàn)與使用方法示例(增加一個(gè)previous屬性實(shí)現(xiàn))
- JavaScript數(shù)據(jù)結(jié)構(gòu)之鏈表的實(shí)現(xiàn)
- javascript寫的一個(gè)鏈表實(shí)現(xiàn)代碼
- javascript循環(huán)鏈表之約瑟夫環(huán)的實(shí)現(xiàn)方法
- javascript數(shù)據(jù)結(jié)構(gòu)之雙鏈表插入排序?qū)嵗斀?/a>
- JS實(shí)現(xiàn)的合并兩個(gè)有序鏈表算法示例
- JavaScript實(shí)現(xiàn)鏈表插入排序和鏈表歸并排序
- JavaScript數(shù)據(jù)結(jié)構(gòu)之單鏈表和循環(huán)鏈表
- JavaScript 雙向鏈表操作實(shí)例分析【創(chuàng)建、增加、查找、刪除等】
相關(guān)文章
jQuery EasyUI window窗口使用實(shí)例代碼
本文通過實(shí)例代碼給大家介紹了jQuery EasyUI window窗口使用功能,代碼簡單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-12-12
js中apply()和call()的區(qū)別與用法實(shí)例分析
這篇文章主要介紹了js中apply()和call()的區(qū)別與用法,結(jié)合實(shí)例形式分析了apply()和call()的功能、區(qū)別、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-08-08
構(gòu)建一個(gè)JavaScript插件系統(tǒng)
這篇文章主要介紹了如何構(gòu)建一個(gè)JavaScript插件系統(tǒng),幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下2020-10-10
ES6知識(shí)點(diǎn)整理之函數(shù)對象參數(shù)默認(rèn)值及其解構(gòu)應(yīng)用示例
這篇文章主要介紹了ES6知識(shí)點(diǎn)整理之函數(shù)對象參數(shù)默認(rèn)值及其解構(gòu)應(yīng)用,結(jié)合實(shí)例形式分析了ES6函數(shù)對象參數(shù)相關(guān)使用技巧,需要的朋友可以參考下2019-04-04
關(guān)于div自適應(yīng)高度/左右高度自適應(yīng)一致的js代碼
在DIV和CSS進(jìn)行網(wǎng)頁布局中,DIV的自適應(yīng)高度和自適應(yīng)寬度是一個(gè)很常見的問題,本文將介紹左右自適應(yīng)高度一致的Jquery與DIV高度自適應(yīng)屏幕的js2013-03-03
JavaScript?ES6模塊導(dǎo)入和導(dǎo)出的方法
ES6在語言標(biāo)準(zhǔn)的層面上實(shí)現(xiàn)了模塊功能,而且實(shí)現(xiàn)的相當(dāng)簡單,完全可以取代CommonJS和AMD規(guī)范,成為瀏覽器和服務(wù)器通用的模塊解決方案,下面這篇文章主要給大家介紹了關(guān)于ES6模塊導(dǎo)入和導(dǎo)出的方法,需要的朋友可以參考下2022-07-07

