[資料結構(Data Structure, DS) 教學 教程 教材 Tutorial] 鏈結串列(Linked List)
YehYeh\'s Notepad yehyeh@gmail.com 

鏈結串列(Linked List)

鏈結串列(Linked List)介紹

  • 由一組節點(Node)組成的有序串列
    • 每個節點由資料欄和一個以上的鏈結欄(Link, Point)組成
    • 鏈結欄指向其它Node的位址 鏈結串列圖示
  • 串列結構宣告
    struct node
    {
        int data;           //資料
        struct node *next;  //指向下一個節點的指標
    }
    
    struct node
    {
        int data;           //資料
        struct node *next;  //指向下一個節點的指標
    }
    
    class Node
    {
        int data;   //資料
        Node next;  //指向下一個節點的指標
    }
    
    class Node
    {
        int data;   //資料
        Node next;  //指向下一個節點的指標
    }
    
  • 特性:
    • 各Node不一定佔用連結的記憶體空間
    • 各Node的型態不一定相同
    • 只支援循序存取(Sequential Access)
    • 插入(Insert)/刪除(Delete) Node容易
  • 種類:
    • 單向鏈結串列(Single Link List)
    • 環狀鏈結串列(Circular Link List)
    • 雙向鏈結串列(Double Link List)
  • 鏈結串列和陣列的比較
    項目鏈結串列陣列
    記憶體需求不需連續的記憶體空間需連續的記憶體空間
    節點型態各Node型態不需相同各Node型態需相同
    操作複雜度插入、刪除都O(1)插入、刪除都O(n)
    空間配置不需事先預留空間,可任意增刪須事先宣告連續空間
    資料共享資料共享容易資料共享不易
    資料分割、連結資料分割、連結容易資料分割、連結不易
    存取方式只支援循序存取可支援隨機及循序存取
    存取速度循序存取速度慢循序存取速度快
    可靠性可靠性差可靠性佳
    額外指標空間需額外的指標空間不需額外的指標空間