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