我正在阅读Albahari兄弟的《C# 4.0权威指南》,看到这段话:
堆栈(Stack)使用一个内部实现了动态扩容的数组,和队列(Queue)以及列表(List)一样。(第288页,第4段)
我不禁想问为什么。链表(LinkedList)提供了 O(1) 的头尾插入和删除操作(这对于堆栈或队列来说应该很好用)。可调整大小的数组在平均情况下具有 O(1) 的插入操作(如果我没记错的话),但最坏情况下是 O(n)(我不确定删除操作)。对于大型堆栈/队列,它可能会使用更多的空间。
这里是否有比这更多的考虑?双向链表实现的缺点是什么?