用两个栈实现一个队列,这个问题与“两个队列实现一个栈”原理很是的类似。只要你明白了”两个队列实现一个栈“的原理,相信聪明的你,就会明白这个问题只是它的变种,全部的异或就会迎刃而解的。这里你们能够参考个人博客http://10740184.blog.51cto.com/10730184/1763006
ios
代码以下:app
#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; //两个队列实现一个栈 #include<queue> template<class T> class Stack { public: void appendTail(const T& x) { q1.push(x); } void deleteTail() { 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; }; void Test() { Stack<int> s; s.appendTail(1); s.appendTail(2); s.appendTail(3); s.appendTail(4); s.deleteTail(); s.deleteTail(); s.deleteTail(); s.deleteTail(); } int main() { Test(); system("pause"); return 0; }