【发布时间】:2011-03-01 08:01:39
【问题描述】:
我正在阅读 Albahari 兄弟的 C# 4.0 in a Nutshell,我发现了这个:
堆栈是通过根据需要调整大小的数组在内部实现的,与队列和列表一样。 (第 288 页,第 4 段)
我不禁想知道为什么。 LinkedList 提供 O(1) 头尾插入和删除(这应该适用于堆栈或队列)。可调整大小的数组具有 O(1) 分期插入(如果我没记错的话),但 O(n) 最坏情况(我不确定删除)。而且它可能比链表使用更多的空间(对于大型堆栈/队列)。
还有比这更多的吗?双向链表实现的缺点是什么?
【问题讨论】:
-
还有一点是底层数组是循环使用的,所以数组元素在头部和尾部移动时被回收(如果没有超出边界)。
-
三个字:内存管理开销。
-
@SebastianNegraszus 谢谢。你是怎么找到的?我搜索了很多,没有找到任何东西。
-
@KooKoo 是本页“相关”下的热门链接之一。我不能说我是否会通过搜索找到它。
标签: c# .net stack queue linked-list