【发布时间】:2013-06-04 18:10:11
【问题描述】:
如何实现一个支持O(1)时间复杂度以下操作的栈?
- 将元素添加到堆栈顶部的推送。
- 从栈顶移除元素的 Pop。
- 查找将返回堆栈中间元素的中间元素。
- Delete Middle 将删除中间元素
【问题讨论】:
-
带哨兵节点的循环双向链表,指向中间元素的指针,布尔值存储堆栈是否有偶数个元素。
-
使所有删除的特殊情况消失。
-
如果有2个元素,哪个是中间的?
标签: algorithm stack implementation