题目介绍
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
题目分析
这是一个典型的栈和队列相互转换的题目,注意,栈的性质是先进后出,队列的性质是先进先出,队列的push操作,可以使用一个栈来完成,队列的pop操作,需要把一个栈的数据转到另外一个栈上,然后只需要对另外一个栈,执行pop()操作即可,因为此时的栈顶即是第一个栈的栈定,看成队列的话,即是队列的出口处,详细操作请看源代码。
源代码
class Solution
{
public:
void push(int node)
{
stack1.push(node);
}
int pop()
{
while(!stack1.empty())
{
stack2.push(stack1.top());
stack1.pop();
}
int num=stack2.top();
stack2.pop();
while(!stack2.empty())
{
stack1.push(stack2.top());
stack2.pop();
}
return num;
}
private:
stack<int> stack1;
stack<int> stack2;
};