我對JS鍊錶的簡單學習

2021-09-16 23:29:19 字數 2449 閱讀 6278

要儲存多個元素,陣列可能是最常用的資料結構。這種資料結構非常方便,但是有乙個缺點:從陣列的起點或者中間插入或移除項的成本非常高,因為需要移動元素(比如你插入乙個元素後面的所有的元素都移動了「位置」)。

相比於陣列來說,鍊錶的好處在於新增或者刪除元素的時候不需要移動其他元素。但是操作鍊錶需要使用指標。陣列的乙個優點是可以直接訪問任何位置的任何元素,但是要是想訪問鍊錶中的某一元素,則是必須從起點開始迭代直到找到目標元素。

建立乙個鍊錶

function linkedlist() 

//各種方法

}

node表示要加入列表的項,它包含乙個element屬性以及乙個next屬性,element表示要新增到列表的值,next表示指向列表下乙個節點項的指標。

當乙個node元素被建立時,它的next指標總是null

列表為空,新增的是第乙個元素。列表不為空,向其追加元素。

要迴圈訪問列表中的所有元素,就需要有乙個起點,就是head

var node = new node(element), //傳入值建立node項

current;

if(head === null) else

//使當前最後一項的指標指向node

current.next = node;

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

};

var list = new linkedlist();
輸入位置,從特定位置移除乙個元素

this.removeat = function(position)  else 

previous.next = current.next;

}length --;

return current.element;

} else

}

在任意位置插入乙個元素

this.insert = function (position, element)  else 

node.next = current; // node的下乙個為current

previous.next = node; // node的上乙個位置為previous

}length++;

return true;

} else

}

把linkedlist物件轉換成乙個字串。

this.tostring = function() 

return string; //返回字串

}

返回元素的位置

this.indexof = function(element) 

index ++;

current = current.next;

}return -1; //找不到返回-1

}

輸入元素,移除該元素

this.remove = function(element)
判斷是否為空 得到長度 得到第乙個元素

this.isempty = function () 

this.size = function ()

this.gethead = function ()

雙向列表提供了兩種迭代列表的方法:從頭到尾迭代,或者反過來。

function doublylinkedlist() ;

var length = 0;

var head = null;

var tail = null; //對列表最後一項的引用

//各種方法

}

this.insert = function(position, element)  else 

} else if(position === length) else

node.next = current;

previous.next = node;

current.prev = node;

node.prev = previous;

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

return true;

} else

}

this.removeat = function(position)  else 

} else if(position === length -1) else

current.next.prev = previous;

}length --;

return current.element;

} else

}

我對單向鍊錶的學習

本文章主要是記述我對單向鍊錶的理解 1.有頭節點和無頭結點鍊錶的理解 2.有頭結點鍊錶的建立 顯示,插入,刪除,氣泡排序,逆置。我對鍊錶的理解就是將乙個個結構體串聯起來。乙個個結構體在乙個鍊錶中就是乙個節點,節點之間是由結構體指標聯絡起來的,也就是他們結構體中會包含乙個同型別的 next指標,用來指...

我對JS佇列的學習

佇列是遵循fifo 先進先出 原則的一組有序的項。佇列在尾部新增新元素,並從頂部移除元素。最新新增的元素必須排在佇列的末尾。在具體應用中通常用鍊錶或者陣列來實現。佇列的操作其實是和棧是差不多的,但是佇列只允許新資料在後端進行新增。1 建立佇列 宣告乙個類 function queue 需要乙個用於儲...

js實現對鍊錶的操作

關於對鍊錶這種資料結構,原來在c語言中有提到過,鍊錶一種長度可變的動態列表。分為單向列表和雙向列表。定義乙個幾點型別建構函式 function node v function arraylist 在第no個節點後面新增乙個新節點 this insertat function no,v else no...