JS LinkedList 鍊錶

2021-09-29 13:42:46 字數 3535 閱讀 5016

陣列(列表)是一種簡單的儲存資料序列的資料結構,要儲存多個元素,陣列(列表)可能是最常用的資料結構。

資料結構

鍊錶儲存有序的元素集合,不同於陣列,鍊錶中的元素在記憶體中並不是連續放置的。

鍊錶

鍊錶

相對於傳統的陣列,鍊錶的好處在於,新增或移除元素的時候不需要移動其他元素。然後,鍊錶需要使用指標,因此實現鍊錶時需額外注意。

鍊錶

陣列的另乙個細節是可以直接訪問任何位置的任何元素,而想要訪問鍊錶中間的乙個元素,需要從起點(表頭)開始迭代列表直到找到所需的元素。

除了對資料的隨機訪問,鍊錶幾乎可以用任何可以使用一維陣列的情況中,如果需要隨機訪問,陣列仍然是更好的選擇。

鍊錶是由一組節點組成的集合,每個節點都使用乙個物件的引用指向它的後繼。指向另乙個節點的引用叫做鏈。

鍊錶

鍊錶

有頭結點的鍊錶

鍊錶中插入乙個節點的效率很高,向鍊錶中插入乙個節點,需要修改它前面的節點(前驅),使其指向新加入的節點,而新加入的節點則指向原來前驅指向的節點。

向鍊錶中插入元素

從鍊錶中刪除元素,將帶刪除元素的前驅節點指向待刪除元素的後繼節點,同時將待刪除元素指向為null,元素就刪除成功了。

從鍊錶中刪除元素

/*節點類*/

function node(element)

/*查詢給定元素的節點*/

function find(element)

return current;

}function previous(item)

return node;

}function remove(item)

}/*在某節點後插入元素*/

function insert(item, element)

function display()

}/*鍊錶類*/

function llist()

var ll = new llist();

ll.insert('head','conway');

ll.insert('conway','russellville');

ll.insert('russellville','alma');

ll.display();//conway russellville alma

ll.remove('russellville');

ll.display();//conway alma

鍊錶類(linkedlist)需要乙個節點輔助類(node),節點類(node)表示要加入列表的專案。

function linkedlist();

var length = 0;//鍊錶節點的數量,私有屬性。

var head = null;//頭節點

/*鍊錶實現的方法*/

this.insert = function(position,element){};

this.remove = function(element){};

this.indexof = function(element){};

this.removeat = function(position){};

this.isempty = function(){};

this.size = function(){};

this.tostring = function(){};

}

鍊錶最後乙個節點的下乙個元素(next)始終是null

場景

/*向鍊錶尾部追加元素*/

var node = new node(element);

//列表中第乙個節點

if(head === null)else

//找到最後一項將其next賦給node以建立鏈結

向為空的鍊錶新增乙個元素

向不為空的鍊錶追加元素 場景

方法

/*根據給定位置移除某一元素*/

this.removeat = function(position)else

node.next = current;

previous.next = node;

}length++;//更新鍊錶長度

return true;

}else

};

在列表起點新增元素

在列表尾部新增元素

在列表中間新增元素

this.isempty = function();

this.size = function();

this.gethead = function();

/*接收元素的值獲取元素所在位置,若無則返回-1.*/

this.indexof = function(element)

index++;

current = current.next;

}return -1;

};this.remove = function(element);

/*將鍊錶物件轉換成乙個字串*/

this.tostring = function()

return string;

};

鍊錶 環形鍊錶

環形鍊錶也叫迴圈鍊錶 可以是雙鏈表 也可以是單鏈表 操作原理和單鏈表差不多,只是最後乙個節點不在指向空 null 而是頭 head 這裡以單鏈表舉例 description 環形鍊錶 author lzq date 2018 11 3 20 46 version 1.0 public class a...

鍊錶 初識鍊錶

鍊錶 前言 小弟初學資料結構,有錯誤的地方望大家不吝賜教 認識鍊錶 列表相比陣列更具有優勢,鍊錶不同於資料和其他資料結構依靠位置來進行訪問或者其他操作,如陣列是依靠下表來運算元據。而鍊錶是通過關係來尋找或者運算元據。鍊錶的特性 插入 和 刪除 效率高,只需要變更指向的鏈結點即可。但是隨即訪問操作的效...

鍊錶(鍊錶建立)

先找到了一些與單鏈表相關的概念 2.指標域 ai元素儲存指向後繼元素儲存位置的資訊 3.結點 包含資料域和指標域 4.單鏈表 每個結點只包含乙個指標域的線性表 5.頭指標 要素 鍊錶中第乙個結點的儲存位置 線性表最後乙個結點指標為空 6.頭結點 非要素 單鏈表第乙個結點前附設乙個結點 其指標域指向第...