用两个队列实现栈
思路:每次push的时候,选择非空的队列push,如果两个队列都空,任选一个;pop的时候,将队列前n-1个元素转移到另一个队列,再pop第n个(最后一个)元素。每次操作后都保持至少有一个队列是空的。
#include<iostream> #include<queue> using namespace std; class Stack { public: void push(int elem) { if(que1.size()!=0) { que1.push(elem); }else{ que2.push(elem); } } int pop() { if(que1.size()!=0) { while(que1.size()>1) { int tmp=que1.front(); que1.pop(); que2.push(tmp); } int tmp=que1.front(); que1.pop(); return tmp; }else{ while(que2.size()>1) { int tmp=que2.front(); que2.pop(); que1.push(tmp); } int tmp=que2.front(); que2.pop(); return tmp; } } private: queue<int> que1; queue<int> que2; };