js實現資料結構 單鏈表

2021-09-01 23:55:35 字數 1873 閱讀 2096

單鏈表是一種鏈式訪問的資料結構,用一組位址任意的儲存單元存放線性表中的資料元素。每個元素由乙個儲存元素本身的節點和乙個指向下乙個元素的引用(也稱指標或鏈結)組成。下圖展示了乙個單鏈表的結構圖:

每個元素除了由元素本身的節點還有指向下乙個元素的指標構成

從鍊錶中新增或者刪除元素不需要移動其他的元素

訪問鍊錶中間的乙個元素,需要從表頭開始迭代列表直到找到所需的元素

生活中的單鏈表很典型也很常見。例如尋寶遊戲,你有一條線索,這條線索是指向尋找下一條線索的地點的指標,你可以順著這條鏈結去下乙個地方,得到另一條指向下一處的線索,如果想得到列表中間的線索的唯一辦法就是從起點(第一條線索)順著列表尋找。另乙個案例就是火車,還有其他的案例這裡就不一一枚舉了。

首先建立乙個類似於類的結構定義單鏈表,宣告一些基本的屬性,**如下:

//定義單鏈表

function linkedlist()

let length = 0;

let head = null;

同時在該類中定義並宣告單鏈表的一些基本方法,**如下:

//向列表尾部新增乙個新的項

let node = new node(element);

let current;//current變數是對列表中第乙個元素的引用

if (head === null) else

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

current.next = node;

}length++;//更新列表的長度

} ;//向列表的特定位置插入乙個新的項

this.insertnode = function (pos,ele) else

//找到位置後,current就是對想要插入新元素的位置之後乙個元素的引用

//previous是對想要插入新元素的位置之前乙個元素的引用

previous.next = node;

node.next = current;

};length++;

return true;

}else

};//移除列表某位置的元素

this.removeat = function (pos) else {

while (index++ 首先定義乙個單鏈表,並向鍊錶新增兩個元素,**如下:

let list = new linkedlist();

//向鍊錶的尾部新增兩個元素

呼叫宣告的方法,檢視結果,**如下:

console.log("鍊錶目前所有的元素構成的字串為:"+list.tostring());//輸出15-10

console.log("鍊錶中的元素個數是:"+ list.size());//輸出2

console.log(list.isempty());//判斷鍊錶是否為空,false

呼叫其他的方法,如檢視元素索引,在指定位置插入元素,移除元素,**如下:

console.log('元素10在鍊錶中的索引是:'+list.indexof(10));//輸出0

//向鍊錶的index為1的位置新增乙個元素

console.log(list.insertnode(1,'33'));//輸出true

//刪除鍊錶某個位置的元素

console.log(list.removeat(0));//輸出15

//刪除某個特定的元素

console.log(list.remove(10));//輸出true

資料結構 單鏈表實現

線性表的鏈式儲存結構的特點是用一組任意的儲存單元儲存線性表的資料元素 這組儲存單元可以是連續的,也可以是不連續的 因此,為了表示每個資料元素與其直接後繼資料元素之間的邏輯關係,對資料元素來說,除了儲存其本身的資訊之外,還需儲存乙個指示其直接後繼的資訊 即直接後繼的儲存位置 這兩部分資訊組成資料元素的...

資料結構 單鏈表實現

在鏈式儲存中,節點之間的儲存單元位址可能是不連續的。鏈式儲存中每個結點都包含兩部分 儲存元素本身的資料域和儲存結點位址的指標域。結點中的指標指向的是下乙個結點,也就是儲存的下乙個結點的位址。1.建立鍊錶 在建立鍊錶時,頭結點不儲存資料,但可以儲存鍊錶的資訊。struct header 儲存資料的結點...

資料結構 單鏈表實現

package list public class singlelinkedlist private class node public node object data 頭插法 public void headinsert object data 尾插法 public void tailinser...