請問你甚麼時候會用到linked list
網路上找過一些資料,都沒有找到很好的答案
很多人都說
"當你需要在中間大量新增刪除element的時候,然後不需要做random access的時候,
因為linked list新增刪除是O(1),在linked list random access是O(N)"
但是你也要找到欲新增/刪除的那個點才能刪除它,所以整體time complexity應為O(N)
比方說假設你有以下linked list:
1 -> 5 -> 3 -> 15 -> 2 -> ... -> NULL
↑
head
要在上面linked list刪除value為2的element,必須要
1. 找到value為2的element (Time Complexity: O(N))
2. 刪除該element (Time Complexity: O(1))
這樣感覺上還倒不如用vector
當然在vector在push_back時,有些時候需要re-allocate (long term而言還是O(1))
尤其在中間做新增/刪除時會需要shift elements (O(N))
簡言之,到底甚麼時候用linked list呢?
(我目前想到大概就是用來實作queue或tree的時候,其他scenario不會用到linked list)