用两个栈实现一个队列,这个问题与“两个队列实现一个栈”原理非常的相似。只要你明白了”两个队列实现一个栈“的原理,相信聪明的你,就会明白这个问题只是它的变种,所有的异或就会迎刃而解的。这里大家可以参考我的博客http://10740184.blog.51cto.com/10730184/1763006


代码如下:


#define_CRT_SECURE_NO_WARNINGS1#include<iostream>usingnamespacestd;//两个队列实现一个栈#include<queue>template<classT>classStack{public:voidappendTail(constT&x){q1.push(x);}voiddeleteTail(){if(q2.empty()){while(!q1.empty()){q2.push(q1.front());q1.pop();}cout<<q2.front()<<"";q2.pop();}else{cout<<q2.front()<<"";q2.pop();}}private:queue<T>q1;queue<T>q2;};voidTest(){Stack<int>s;s.appendTail(1);s.appendTail(2);s.appendTail(3);s.appendTail(4);s.deleteTail();s.deleteTail();s.deleteTail();s.deleteTail();}intmain(){Test();system("pause");return0;}