我们能在O(1)时间内反转一个堆栈吗



我必须在O(1(或恒定时间内反转堆栈。这是一个常见的";阵列";基于栈类的push、pop和top方法;其中必须添加额外的公共冲销方法。反转方法必须工作不稳定的时间才能实现反转。队列可以用来实现这个目标吗?问题提示使用循环数组来实现这个目标?这是一个作业问题。。有小费吗?

您可以设计一个在恒定时间内可逆的堆栈,但有许多堆栈需要O(N(时间才能反转。例如,如果堆栈中的每个节点仅包含数据加上指向下一个(指向底部(元素的指针,则具有N节点的堆栈具有要改变的N指针,如"0";下一个";每个节点的关系都在变化。

当所有N节点都需要更改时,过程(至少(为O(N(。

要使堆栈在恒定时间内可逆,可以使用双链接列表并跟踪当前向下的方向。使用此设置,您可以通过翻转";哪个方向是向下的";旗帜请注意,这种方法会给大多数其他堆栈操作增加开销,因为每次需要查找"时都需要检查标志;下一个";节点,例如当按下或弹出时

相关内容

最新更新