摘要:而遍歷鏈表,則是跟著首元素一直遍歷至尾元素。單鏈表代碼實(shí)現(xiàn)類實(shí)現(xiàn)類用來設(shè)置鏈表的節(jié)點(diǎn)相關(guān)信息本節(jié)點(diǎn)信息指向下一個節(jié)點(diǎn)的指針類實(shí)現(xiàn)類實(shí)現(xiàn)的是一些對鏈表進(jìn)行操作的方法,包括插入刪除節(jié)點(diǎn)查找節(jié)點(diǎn)等。
單鏈表初識
鏈表是由一組節(jié)點(diǎn)組合成的集合.每個節(jié)點(diǎn)都使用一個對象的引用指向它的后繼,指向另一個節(jié)點(diǎn)的引用叫做鏈
數(shù)組元素靠他們的位置進(jìn)行引用,鏈表元素則是靠相互之間的關(guān)系進(jìn)行引用,在下圖中bread跟在milk后面而不是說bread是鏈表中的第二個元素。
而遍歷鏈表,則是跟著首元素一直遍歷至尾元素。由圖可知尾元素指向一個null元素。
為了更好的標(biāo)志處鏈表的起始節(jié)點(diǎn),我們在前面設(shè)置一個特殊節(jié)點(diǎn),叫做頭節(jié)點(diǎn)
插入節(jié)點(diǎn):在鏈表中插入一個節(jié)點(diǎn)效果非常的高,需要修改其前面的節(jié)點(diǎn),使指針指向新節(jié)點(diǎn)
刪除節(jié)點(diǎn):刪除節(jié)點(diǎn)即是將待刪除元素的前驅(qū)節(jié)點(diǎn)指向待刪除元素的后繼節(jié)點(diǎn)。
單鏈表代碼實(shí)現(xiàn) Node類實(shí)現(xiàn)//Node類用來設(shè)置鏈表的節(jié)點(diǎn)相關(guān)信息 // 1 本節(jié)點(diǎn)信息 2 指向下一個節(jié)點(diǎn)的指針 function Node(ele){ this.element=ele; this.next=null; }Llist類實(shí)現(xiàn)
Llist類實(shí)現(xiàn)的是一些對鏈表進(jìn)行操作的方法,包括插入、刪除節(jié)點(diǎn)、查找節(jié)點(diǎn)等。
插入節(jié)點(diǎn)
//Llist類的實(shí)現(xiàn) function Llist(){ this.head=new Node("head"); } //添加方法 Llist.prototype={ find:function(ele){ var curNode=this.head//從頭節(jié)點(diǎn)開始遍歷 while(curNode.element!=ele){ curNode=curNode.next; } return curNode;//返回找到的節(jié)點(diǎn) 若是沒有找到則返回的是null }, insert:function(newEle,ele){//插入節(jié)點(diǎn) var newNode=new Node(newEle); var curNode=this.find(ele); newNode.next=curNode.next; curNode.next=newNode; }, display:function(){//遍歷顯示節(jié)點(diǎn)信息 var curNode=this.head; while(curNode.next!=null){ console.log(curNode.next.element);//只顯示有數(shù)據(jù)的節(jié)點(diǎn) curNode=curNode.next; } } }
測試
//測試 var citys=new Llist(); citys.insert("贛州","head"); citys.insert("江西","贛州"); citys.insert("南昌","江西"); citys.display();
明天開始校招,先寫到這里^+^
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/91556.html
摘要:實(shí)現(xiàn)移除給定的元素要移除的元素返回值表示移除成功方法說明移除單向鏈表中某個位置的元素。的前端樂園原文鏈接寒假前端學(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)與...
摘要:需求實(shí)現(xiàn)一個函數(shù)對鏈表進(jìn)行升序排列插入排序。關(guān)于插入排序插入排序的介紹可以看,大體邏輯為建立一個新的空鏈表。遍歷完成,返回新鏈表。代碼如下總結(jié)因?yàn)橛猩蟼€的函數(shù)的幫助,這個插入排序?qū)崿F(xiàn)起來非常簡單。 TL;DR 2016 年末最后一篇,對鏈表進(jìn)行插入排序。系列目錄見 前言和目錄 。 需求 實(shí)現(xiàn)一個 insertSort() 函數(shù)對鏈表進(jìn)行升序排列(插入排序)。實(shí)現(xiàn)過程中可以使用 上一個 ...
摘要:每個線性表上的數(shù)據(jù)最多只有前和后兩個方向。數(shù)組鏈表隊(duì)列棧等就是線性表結(jié)構(gòu)。非線性表數(shù)據(jù)之間并不是簡單的前后關(guān)系。不包含任何元素的棧稱為空棧。移除棧頂?shù)脑兀瑫r返回被移除的元素。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 前言 基礎(chǔ)知識就像是一座大樓的地基,它決定了我們的技術(shù)高度。 我們應(yīng)該多掌握一些可移值的...
摘要:需求實(shí)現(xiàn)函數(shù)把兩個鏈表合并成一個。新鏈表的節(jié)點(diǎn)是交叉從兩個鏈表中取的。通過行的調(diào)換指針,我們可以保證下一次循環(huán)就是對另一個鏈表進(jìn)行操作了。這樣一直遍歷到兩個鏈表末尾,返回結(jié)束。參考資料的代碼實(shí)現(xiàn)的測試 TL;DR 把兩個鏈表洗牌合并成一個,系列目錄見 前言和目錄 。 需求 實(shí)現(xiàn)函數(shù) shuffleMerge() 把兩個鏈表合并成一個。新鏈表的節(jié)點(diǎn)是交叉從兩個鏈表中取的。這叫洗牌合并。舉...
摘要:類表示要加入鏈表的項(xiàng)。循環(huán)鏈表和普通鏈表之間唯一的區(qū)別在于,最后一個元素指向下一個元素的指針不是引用,而是指向第一個元素。這里就不進(jìn)行代碼實(shí)現(xiàn)了,大家可以結(jié)合上面的單向鏈表和雙向鏈表自己實(shí)現(xiàn)一個循環(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í)現(xiàn)一個函數(shù),把一個鏈表切分成兩個。子鏈表的節(jié)點(diǎn)應(yīng)該是在父鏈表中交替出現(xiàn)的。所以整個算法的解法就能很容易地用表示。唯一需要考慮的就是在每個循環(huán)體中判斷節(jié)點(diǎn)該插入哪個鏈表。也有人使用持續(xù)增長的配合取余來做,比如。 TL;DR 把一個鏈表交替切分成兩個,系列目錄見 前言和目錄 。 需求 實(shí)現(xiàn)一個 alternatingSplit() 函數(shù),把一個鏈表切分成兩個。子鏈表的節(jié)點(diǎn)應(yīng)該是在父鏈...
閱讀 2348·2021-11-15 11:37
閱讀 2625·2021-09-23 11:21
閱讀 2952·2021-09-07 10:11
閱讀 3164·2019-08-30 15:53
閱讀 2826·2019-08-29 15:13
閱讀 1606·2019-08-26 13:57
閱讀 1098·2019-08-26 12:23
閱讀 2438·2019-08-26 11:51