連結串列的優點除了「插入刪除不需要移動其他元素」之外,還在於它是一個局部化結構。就是說當你拿到連結串列的一個 node 之後,不需要太多其它數據,就可以完成插入,刪除的操作。而其它的數據結構不行。比如說 array,你只拿到一個 item 是斷不敢做插入刪除的。
典型的例子是一種數據同時需要滿足 ordered(註意不是 sorted),又要滿足 O(log(n)) 或者 O(1) 存取。那就需要同時用 map/hashmap 和另一種 ordered container 來維護。如果 90% 的 code 透過 map/hashmap,又要維護 duel-container 的一致,那用連結串列作為 ordered container 就最合適。
當然了,局部化這個好處只有 intrusive 連結串列才有,就是必須 prev/next 嵌入在數據結構中。像 STL 和 Java 那種設計是失敗了。
另外多說幾句:
我不認為連結串列是 abstract data structure。Linked-lis