【发布时间】:2014-08-12 23:49:17
【问题描述】:
在互联网上搜索时,我找到了很多关于如何使用 2 个堆栈实现队列?
的答案
但是如何仅使用堆栈的推送和弹出操作来实现队列。 stack 的 push 操作可以以与队列的 enqueue 操作类似的方式使用,因为两者都在末尾追加数据。但问题在于实现 deque 操作,因为队列以 FIFO 方式工作,而堆栈以 LIFO 方式工作。
我知道在某个地方我们将不得不使用递归,以防仅使用堆栈的推送和弹出操作来反转堆栈。
我正在编写的使用堆栈的 push(),pop() 和 isEmptyStack() 函数来反转堆栈的伪代码是
void reverseStack(Stack s){
if(isEmptyStack(s))
return
temp=pop(s)
reverseStack(s)
push(s,temp)
}
【问题讨论】:
-
简单。你欺骗。使用调用堆栈作为您的第二个堆栈。也称为递归。