请问你什么时候会用到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)