🎬 電影院 vs 尋寶遊戲
Array 像電影院的座位——位子連續排列、每格有編號,想找第5個直接去 index 4。
Linked List 像尋寶遊戲——每張紙條告訴你「下一個在哪裡」,必須一張一張找。
同樣存資料,差在哪裡?— 操作看差異!
| 操作 | Array | Linked List | 誰快? |
|---|---|---|---|
| 隨機存取(第 i 個) | O(1) | O(n) | 🏆 Array |
| 開頭插入 | O(n) 全部後移 | O(1) | 🏆 Linked List |
| 中間插入 | O(n) | O(n)+O(1) | 🤝 差不多 |
| 尾端插入 | O(1)* | O(n)或O(1)** | ⚡ Array 略勝 |
| 搜尋特定值 | O(n) | O(n) | 🤝 一樣 |
| 記憶體用量 | 緊湊 | 多出指標 | 🏆 Array |
* 未超出容量 ** 若有 tail pointer
每個元素占相同大小、地址連續
節點散落各處,靠指標串起來
起始+index×大小 直接計算位址,O(1)。