JavaScript 的資料結構和演算法 - 連結串列篇

MasterShu發表於2019-12-15

連結串列

連結串列 相比於陣列是稍複雜的資料結構。

連結串列的特點:

  • 線性表
  • 不連續的空間儲存

連結串列作為和陣列相似的資料結構,其都是線性表。但是有個很大的不同,那就是在於儲存空間的不連續性。可能你會覺得這個沒啥,我們稍微詳細的解釋一下,你就會明白了。

連結串列 是透過在單個節點上標註下一個節點的位置來把所有的元素連結在一起。所以,儲存上並不需要連續的空間,這樣就不會出現陣列需要 1G 空間,明明剩餘 1.2G,卻提示空間不足的情況。不過從表述也能看出,它會把單個節點變大,畢竟還要儲存下一個節點的位置(雙向連結串列還要存上一個節點位置)。

連結串列的擁有很多種結構,這兒就挑一些一一展開介紹。

單連結串列:最簡單的連結串列,也是最常用的連結串列。連結串列的插入與刪除操作都是 O(1)。 找到需要插入的位置就需要進行遍歷,平均時間複雜度為 O(1)。

迴圈連結串列:迴圈連結串列就是在普通單連結串列的基礎上,對收尾進行相連,讓尾節點的 next 指向頭節點。這兒提供一個 可以用迴圈連結串列來解決問題的例子,Josephus problem。

雙向連結串列:雙向連結串列意味著刪除一個節點,就可以直接獲取前序節點,操作時間複雜度就是 O(1)。

原文連結 傳送門

本作品採用《CC 協議》,轉載必須註明作者和本文連結
路漫漫其修遠兮,吾將上下而求索。

相關文章