摘要:鏈表存儲有序的元素集合,不同于數(shù)組,鏈表中的元素在內(nèi)存中并不是連續(xù)放置,每個元素有一個存取元素本身的節(jié)點和一個指向下一個元素的引用組成。優(yōu)點添加或者移除元素的時候不需要移動其他元素。
鏈表存儲有序的元素集合,不同于數(shù)組,鏈表中的元素在內(nèi)存中并不是連續(xù)放置,每個元素有一個存取元素本身的節(jié)點和一個指向下一個元素的引用組成。
優(yōu)點:添加或者移除元素的時候不需要移動其他元素。只需要找到加入的節(jié)點,斷開并插入一個元素(修改引用)
function LinkedList() { let Node = function (element) {// 輔助類,包含一個element屬性即具體的值,以及一個next屬性即指向下一個節(jié)點的引用 this.element = element; this.next = null; }; let length = 0; let head = null; /** * 向列表尾部添加一個新的項 * @param element */ this.append = function (element) { let node = new Node(element), current; if (head === null) { head = node; } else { current = head; // 循環(huán)列表找到最后一項 while (current.next) { current = current.next } // 將最后一項的引用指向新元素(將最后一項的next指向node,建立新連接) current.next = node; } length++;// 更新列表的長度 }; /** * 向列表的特定位置插入一個新的項 * @param position * @param element */ this.insert = function (position, element) { if (position > -1 && position < length) { let node = new Node(element); let current = head, previous, index = 0; if (position === 0) { head = node; node.next = current } else { while (index++ < position) { previous = current; current = current.next } previous.next = node; node.next = current } length++; return true } else { return false } }; /** * 從列表的特定位置移出一項 * @param position */ this.removeAt = function (position) { // 檢查越界值 if (position > -1 && position < length) {// 驗證該位置是否有效 // current是對要移出元素的引用 // previous是對要移出的元素前一個元素的引用 let current = head, index = 0, previous; // 移出第一項 if (position === 0) { head = current.next; } else { while (index++ < position) { previous = current; current = current.next } // 將previous與current的下一項鏈接起來:這樣跳過current,從而實現(xiàn)移出,垃圾收集 previous.next = current.next } length--; return current.element } else { return null } }; /** * 從列表移出一項 * @param element */ this.remove = function (element) { }; /** * 返回元素在列表中的索引 * @param element */ this.indexOf = function (element) { let current = head, index = 0; while(current){ if(element === current.element){// 判定條件需要優(yōu)化,對于應(yīng)用類型要判定值相等 return index; } index++; current = current.next } return -1 }; this.isEmpty = function () { }; this.size = function () { }; this.getHead = function () { }; /** * 由于使用Node輔助類,所以要重寫繼承自默認(rèn)對象的toString方法 */ this.toString = function () { let current = head, string = ""; while (current) { string += current.element + (current.next ? "n" : ""); current = current.next } return string }; this.print = function () { } }
雙向鏈表
循環(huán)鏈表
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/108866.html
摘要:在字典中,存儲的是鍵,值,集合可以看作值,值的形式存儲元素,字典也稱為映射方法描述備注向字典中添加新元素通過某個鍵值從字典中移除對應(yīng)的數(shù)據(jù)值判斷某個鍵值是存在于這個字典中通過鍵值獲取對應(yīng)的數(shù)據(jù)值返回字典所有元素的數(shù)量刪除字典中所有元素將字典 在字典中,存儲的是[鍵,值],集合可以看作[值,值]的形式存儲元素,字典也稱為映射 方法 描述 備注 set(key,...
摘要:前言本章為重讀學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法的系列文章,該章節(jié)主要講述數(shù)據(jù)結(jié)構(gòu)鏈表,以及實現(xiàn)鏈表的過程和原理。鏈表,是存儲有序的元素集合。鏈表中的元素在內(nèi)存中并不是連續(xù)放置的,每個元素由一個存儲自身的元素節(jié)點和一個指向下一個元素的引用指針或鏈接組成。 定場詩 傷情最是晚涼天,憔悴廝人不堪言; 邀酒摧腸三杯醉.尋香驚夢五更寒。 釵頭鳳斜卿有淚,荼蘼花了我無緣; 小樓寂寞新雨月.也難如鉤也難圓。 前言...
摘要:鏈表數(shù)據(jù)結(jié)構(gòu)與算法第五章鏈表數(shù)據(jù)結(jié)構(gòu)鏈表不同與數(shù)組數(shù)組要插入或者移入一個元素的成本很高,因為所有元素都需要移動位置。 JavaScript-鏈表 《Javascript數(shù)據(jù)結(jié)構(gòu)與算法》第五章 5.1 鏈表數(shù)據(jù)結(jié)構(gòu) 鏈表不同與數(shù)組 數(shù)組要插入或者移入一個元素的成本很高,因為所有元素都需要移動位置。 鏈表插入或者移動一個元素時很高效,因為并不需要移動其他的元素位置。 鏈表存儲元素的方式...
摘要:算法第一章學(xué)習(xí)筆記實現(xiàn)更多內(nèi)容目標(biāo)總結(jié)本書主要內(nèi)容,相應(yīng)算法使用來模仿實現(xiàn)在計算機科學(xué)領(lǐng)域,我們用算法這個詞來描述一種有限確定有效的并適合用計算機程序來實現(xiàn)的解決問題的方法。 《算法》第一章學(xué)習(xí)筆記js實現(xiàn) 更多內(nèi)容 目標(biāo):總結(jié)本書主要內(nèi)容,相應(yīng)算法使用js來模仿實現(xiàn) 在計算機科學(xué)領(lǐng)域,我們用算法這個詞來描述一種有限、確定、有效的并適合用計算機程序來實現(xiàn)的解決問題的方法。我們關(guān)注的大多...
摘要:算法第一章學(xué)習(xí)筆記實現(xiàn)更多內(nèi)容目標(biāo)總結(jié)本書主要內(nèi)容,相應(yīng)算法使用來模仿實現(xiàn)在計算機科學(xué)領(lǐng)域,我們用算法這個詞來描述一種有限確定有效的并適合用計算機程序來實現(xiàn)的解決問題的方法。 《算法》第一章學(xué)習(xí)筆記js實現(xiàn) 更多內(nèi)容 目標(biāo):總結(jié)本書主要內(nèi)容,相應(yīng)算法使用js來模仿實現(xiàn) 在計算機科學(xué)領(lǐng)域,我們用算法這個詞來描述一種有限、確定、有效的并適合用計算機程序來實現(xiàn)的解決問題的方法。我們關(guān)注的大多...
閱讀 3547·2021-11-17 17:01
閱讀 3951·2021-11-08 13:12
閱讀 2508·2021-10-08 10:04
閱讀 735·2021-09-29 09:35
閱讀 1450·2021-09-26 10:12
閱讀 2116·2021-09-07 09:58
閱讀 1985·2019-08-30 15:55
閱讀 2165·2019-08-30 13:14