【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路
队列是一种先进先出的顺序表,而栈是一种先进后出的顺序表,想要用栈来实现队列的操作,首先一个栈是不够的,我们需要两个栈,其中一个负责存放进队列的数字,另外一个负责出队列的操作。
每次插入操作,我们只需要将插入的数字放入进队操作的栈里,一旦遇到出队的操作,我们先看出队栈是否为空,不为空肯定就先删除出队栈的栈顶元素,如果空,我们就要把入堆栈的的数字全部转移到出队栈里面
class Solution
{
public:
void push(int node)
{
in.push(node);
}
int pop()
{
int ans;
if(!out.empty())
{
ans = out.top();
out.pop();
}
else
{
while(!in.empty())
{
out.push(in.top());
in.pop();
}
ans = out.top();
out.pop();
}
return ans;
}
private:
stack<int> in;
stack<int> out;
};

本文介绍了一种使用两个栈来模拟队列的行为的方法。通过一个栈进行元素的压入操作,另一个栈则用来进行弹出操作。当需要弹出元素时,若弹出栈为空,则将压入栈的所有元素转移至弹出栈。
394

被折叠的 条评论
为什么被折叠?



