用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路:用栈来实现队列,无非就是实现从一端插入数据,而从另一端取出数据
1、将stack2中所有的元素放在stack1中
2、将要插入的结点放在stack2的最下面
3、将stack1中所有的元素放在stack2中,也就是node上面
4、取出数据并返回
class Solution
{//用栈来实现队列,无非就是实现从一端插入数据,而从另一端取出数据
public:
void push(int node) {
while(!stack2.empty()){//将stack2中所有的元素放在stack1中
stack1.push(stack2.top());
stack2.pop();//删除
}
stack2.push(node);//将要插入的结点放在stack2的最下面
while(!stack1.empty()){//将stack1中所有的元素放在stack2中,也就是node上面
stack2.push(stack1.top());
stack1.pop();//删除
}
}
int pop() {
int output=stack2.top();
stack2.pop();//删除
return output;
}
private:
stack<int> stack1;
stack<int> stack2;
};