摘要:鏈表實(shí)現(xiàn)設(shè)計(jì)一個(gè)基于對象的鏈表我們設(shè)計(jì)的鏈表包含兩個(gè)類。我們使用一個(gè)構(gòu)造函數(shù)來創(chuàng)建節(jié)點(diǎn)該構(gòu)造函數(shù)設(shè)置了這兩個(gè)屬性的值類類提供了對鏈表進(jìn)行操作的方法。該類的功能包括插入刪除節(jié)點(diǎn)在列表中查找給定的值。
鏈表實(shí)現(xiàn)
設(shè)計(jì)一個(gè)基于對象的鏈表 我們設(shè)計(jì)的鏈表包含兩個(gè)類。
Node 類用來表示節(jié)點(diǎn)
LinkedList 類提供了插入節(jié)點(diǎn)、刪除節(jié)點(diǎn)、顯示列表元素的方法,以及其他一些輔助方法。
Node類Node 類包含兩個(gè)屬性:element 用來保存節(jié)點(diǎn)上的數(shù)據(jù),next 用來保存指向下一個(gè)節(jié)點(diǎn)的
鏈接。我們使用一個(gè)構(gòu)造函數(shù)來創(chuàng)建節(jié)點(diǎn),該構(gòu)造函數(shù)設(shè)置了這兩個(gè)屬性的值:
function Node(element) { this.element = element; this.next = null; }LinkedList類
LList 類提供了對鏈表進(jìn)行操作的方法。該類的功能包括插入刪除節(jié)點(diǎn)、在列表中查找給 定的值。該類也有一個(gè)構(gòu)造函數(shù),鏈表只有一個(gè)屬性,那就是使用一個(gè) Node 對象來保存該 鏈表的頭節(jié)點(diǎn)。
該類的構(gòu)造函數(shù)如下所示:
function LList() { this.head = new Node("head"); this.find = find; this.insert = insert; this.remove = remove; this.display = display; }代碼歸納
function Node(element) { this.element = element; this.next = null; } function LList() { this.head = new Node("head"); this.find = find; this.insert = insert; this.display = display; this.findPrevious = findPrevious; this.remove = remove; } 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; while (!(currNode.next == null)) { print(currNode.next.element); currNode = currNode.next; } } 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; }后話
當(dāng)然,學(xué)好前端,你還需要關(guān)注一個(gè)公眾號!——每日前端
各位兄弟姐妹,共勉!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/79197.html
摘要:實(shí)現(xiàn)移除給定的元素要移除的元素返回值表示移除成功方法說明移除單向鏈表中某個(gè)位置的元素。的前端樂園原文鏈接寒假前端學(xué)習(xí)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法二鏈表 本系列的第一篇文章: 學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法(一),棧與隊(duì)列第二篇文章:學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法(二):鏈表第三篇文章:學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法(三):集合第四篇文章:學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與...
摘要:計(jì)算機(jī)科學(xué)中最常見的兩種數(shù)據(jù)結(jié)構(gòu)是單鏈表和雙鏈表。雙向鏈表雙向鏈表具有單鏈表的所有功能,并將其擴(kuò)展為在鏈表中可以進(jìn)行雙向遍歷。雙向鏈表的操作我們的鏈表將包括兩個(gè)構(gòu)造函數(shù)和。與單鏈表不同,雙向鏈表包含對鏈表開頭和結(jié)尾節(jié)點(diǎn)的引用。 翻譯:瘋狂的技術(shù)宅英文:https://code.tutsplus.com/art...說明:本文翻譯自系列文章《Data Structures With Ja...
摘要:相反,雙向鏈表具有指向其前后元素的節(jié)點(diǎn)。另外,可以對鏈表進(jìn)行排序。這個(gè)實(shí)用程序方法用于打印鏈表中的節(jié)點(diǎn),僅用于調(diào)試目的。第行將更新為,這是從鏈表中彈出最后一個(gè)元素的行為。如果鏈表為空,則返回。 showImg(https://segmentfault.com/img/bVbsaI7?w=1600&h=228); 什么是鏈表 單鏈表是表示一系列節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu),其中每個(gè)節(jié)點(diǎn)指向鏈表中的下一...
摘要:類表示要加入鏈表的項(xiàng)。循環(huán)鏈表和普通鏈表之間唯一的區(qū)別在于,最后一個(gè)元素指向下一個(gè)元素的指針不是引用,而是指向第一個(gè)元素。這里就不進(jìn)行代碼實(shí)現(xiàn)了,大家可以結(jié)合上面的單向鏈表和雙向鏈表自己實(shí)現(xiàn)一個(gè)循環(huán)鏈表。 一、定義 1.1 概念 前面我們學(xué)習(xí)了數(shù)組這種數(shù)據(jù)結(jié)構(gòu)。數(shù)組(或者也可以稱為列表)是一種非常簡單的存儲數(shù)據(jù)序列的數(shù)據(jù)結(jié)構(gòu)。在這一節(jié),我們要學(xué)習(xí)如何實(shí)現(xiàn)和使用鏈表這種動態(tài)的數(shù)據(jù)結(jié)構(gòu),這...
摘要:鏈表鏈表存儲有序的元素集合,但不同于數(shù)組,鏈表中的元素在內(nèi)存中并不是連續(xù)放置的。相對于傳統(tǒng)的數(shù)組,鏈表的一個(gè)好處在于,添加或者刪除元素的時(shí)候不需要移動其他元素。 鏈表 鏈表存儲有序的元素集合,但不同于數(shù)組,鏈表中的元素在內(nèi)存中并不是連續(xù)放置的。每個(gè)元素由一個(gè)存儲元素本事的節(jié)點(diǎn)和一個(gè)指向下一個(gè)元素的引用組成。相對于傳統(tǒng)的數(shù)組,鏈表的一個(gè)好處在于,添加或者刪除元素的時(shí)候不需要移動其他元素。...
閱讀 5058·2021-07-25 21:37
閱讀 698·2019-08-30 15:53
閱讀 3362·2019-08-29 18:47
閱讀 696·2019-08-29 15:39
閱讀 2144·2019-08-29 13:12
閱讀 1812·2019-08-29 12:43
閱讀 3000·2019-08-26 11:52
閱讀 1899·2019-08-26 10:15