Skip to content

vic0627/data-structure

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Data Structure

連結串列 Linked List

單向連結串列 Singly Linked List

元素以節點(Node)的形式存在,每個節點包含數據和一個指向下一個節點的指針(Next)。這樣的結構使得在插入和刪除元素時能夠更有效率,但查找特定元素可能需要遍歷整個串列。

  • Features

    • 節點結構: 每個節點包含兩部分,分別是存儲數據的欄位和指向下一個節點的指針欄位。
    • 動態大小: 單向連結串列的大小可以動態變化,因為你可以輕鬆地插入或刪除節點。
    • 內存利用效率: 相對於陣列,單向連結串列可以更有效地利用內存,因為它不需要連續的內存空間。
  • Advantages

    • 動態插入和刪除: 在串列中插入或刪除節點的操作是高效的,只需調整指針即可,不需要移動大量數據。
    • 節省內存: 串列可以動態調整大小,不需要預先分配固定大小的內存,節省內存空間。
  • Disadvantage

    • 存取效率較差: 訪問特定節點時,需要從頭節點開始遍歷,因此存取效率相對較差,時間複雜度為 O(n)。
    • 不支持隨機訪問: 不能直接通過索引訪問元素,必須從頭節點開始遍歷直到達到目標節點。# data-structure

雙向連結串列 Doubly Linked List

他與單向連結串列相似,但每個節點除了擁有指向下一個節點的指針(Next)外,還擁有指向前一個局點指針(Prev),這使得在雙向連結串列中可以雙向遍歷。

  • Features

    • 節點結構: 每個節點包含三部分,分別是存儲數據的欄位、指向下一個節點的指針(Next)、以及指向前一個節點的指針(Prev)。
    • 雙向遍歷: 可以方便地從頭節點到尾節點,也可以從尾節點到頭節點進行遍歷。
    • 容易進行反向操作: 在雙向連結串列中,進行反向插入、刪除等操作更加容易,因為每個節點都有指向前一個節點的指針。
  • Advantages

    • 雙向遍歷: 可以快速從頭到尾或從尾到頭遍歷,這在某些情況下可以優化查找和操作的效率。
    • 方便的反向操作: 插入和刪除節點時,可以更輕松地處理前一個節點,這有助於簡化一些操作。
  • Disadvantages

    • 相對複雜: 雙向連結串列相對於單向連結串列來說,實現起來較為複雜,需要更多的指針操作。
    • 占用更多內存: 由於每個節點都需要存儲指向前一個節點的指針,相對於單向連結串列,雙向連結串列占用更多的內存空間。

環狀連結串列 Circular Linked List

串列的最後一個節點的指針指向第一個節點,形成一個循環。這種特殊結構使得環狀連結串列在某些情況下更為方便。

  • Features

    • 循環結構: 最後一個節點的指針指向第一個節點,形成一個循環結構。
    • 沒有終止節點: 由於循環結構,沒有明確的終止節點,需要特別處理循環結構的終止條件。
  • Advantages

    • 遍歷方便: 由於最後一個節點指向第一個節點,遍歷整個串列變得更為方便,可以使用單一指針進行循環遍歷。
    • 應用於某些問題: 在某些問題中,環狀連結串列的特殊結構更容易應對,例如實現緩衝區、紀錄輪換等。
  • Disadvantages

    • 特殊結構的處理: 由於循環結構,需要特別處理插入、刪除等操作,以避免形成死循環。
    • 難以定位終止點: 由於沒有明確的終止節點,可能需要額外的標誌或條件來確定遍歷的終止。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors