用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
题目介绍
用两个栈来实现一个队列,完成队列的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;
};