//双栈实现队列 //入栈:直接在栈A中入栈。 //出栈:(1)如果栈B非空,栈B直接出栈;(2)如果栈B为空,将栈A中元素转移到栈B中,再由栈B出栈; #include <stack> using namespace std; template<class T> struct Myqueue { stack<T> s1; stack<T> s2; void push(T &t) { s1.push(t); } void pop() { if(s2.empty()) { while(!s1.empty()) { s2.push(s1.top()); s1.pop; } } if(!s2.empty()) s2.pop(); } T front() { if(s2.empty) { while(!s1.empty()) { s2.push(s1.top()); s1.pop(); } } return s2.top(); } };