DSA 連結串列
連結串列顧名思義,是一種節點相互連結的列表。每個節點包含資料和一個指標。它們相互連結的方式是每個節點指向記憶體中下一個節點的位置。
連結串列
連結串列由包含一些資料和指向下一個節點的指標或連結的節點組成。
使用連結串列的一個巨大好處是,節點可以儲存在記憶體中任何可用的空間,節點不必像陣列中的元素那樣連續儲存在一起。連結串列的另一個好處是,在新增或刪除節點時,列表中的其他節點不必移動。
連結串列與陣列
理解連結串列最好的方法也許是將其與陣列進行比較。
連結串列由我們自己建立的節點組成,是一種線性資料結構,而陣列是程式語言中已有的、我們可以使用的現有資料結構。
連結串列中的節點儲存指向其他節點的連結,但陣列元素不需要儲存指向其他元素的連結。
注意:連結串列和陣列在記憶體中的儲存方式將在 下一頁 中更詳細地解釋。
下表將連結串列與陣列進行比較,以更好地理解連結串列。
陣列 | 連結串列 | |
---|---|---|
程式語言中已有的資料結構 | 是 | 否 |
記憶體中固定大小 | 是 | 否 |
元素或節點在記憶體中緊鄰地儲存(連續地) | 是 | 否 |
記憶體使用率低 (每個節點只包含資料,沒有指向其他節點的連結) |
是 | 否 |
元素或節點可以直接訪問(隨機訪問) | 是 | 否 |
元素或節點可以在常數時間內插入或刪除,無需在記憶體中進行移位操作。 | 否 | 是 |
為了更詳細地解釋這些區別,下一頁將重點介紹連結串列和陣列在記憶體中的儲存方式。