用兩個棧實現一個隊列,這個問題與「兩個隊列實現一個棧」原理很是的類似。只要你明白了」兩個隊列實現一個棧「的原理,相信聰明的你,就會明白這個問題只是它的變種,全部的異或就會迎刃而解的。這裏你們能夠參考個人博客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; }