题目
分析
栈:先进后出
队列: 先进先出,
那么两个栈刚好可以满足队列的性质
需要注意的是,要想实现我们的想法,必须使得栈2是空的,如果栈2不为空,我们先要将栈2元素出栈,再来执行上面的操作
c++代码
class Solution { public: //用栈1之执行入队操作 void push(int node) { stack1.push(node); } int pop() { int r = 0; //定义一个变量用于接收最终栈2的出栈元素,也就是队列的出队元素 //首先判断当栈2 不为空的时候 if(!stack2.empty()) { //直接将栈2的元素出栈 r = stack2.top(); stack2.pop(); } else { //如果栈2 为空,而且栈1不为空 while(!stack1.empty()) { //将栈1的元素压入栈2中 stack2.push(stack1.top()); stack1.pop(); } //最终栈2栈顶元素出栈 r = stack2.top(); stack2.pop(); } //返回栈2的栈顶元素即可(就是队列元素出队的情况) return r; } private: stack<int> stack1; stack<int> stack2; };