两个栈实现一个队列
/** * 两个栈实现一个队列 * 栈IN用做入列,栈OUT用做出列 * push: * 栈IN执行push操作 * pop: * 如果栈OUT不为空,执行pop操作 * 如果栈OUT为空,将栈IN所有元素依次pop并push到栈OUT。 */ #include <stack> #include <iostream> using namespace std; template<typename TYPE> class Queue { public: void push(const TYPE& a_data) { IN.push(a_data); } TYPE front() { if (!OUT.empty()) { return OUT.top(); } else { while (!IN.empty()) { OUT.push(IN.top()); IN.pop(); } return OUT.top(); } } void pop() { if (!OUT.empty()) { OUT.pop(); } else { while (!IN.empty()) { OUT.push(IN.top()); IN.pop(); } OUT.pop(); } } private: stack<TYPE> IN; stack<TYPE> OUT; }; int main() { Queue<int> myQueue; for (int i=0; i<10; i++) { myQueue.push(i); } for (int i=0; i<10; i++) { cout << myQueue.front() << endl; myQueue.pop(); } return 0; }
作者:涵曦(www.hanxi.cc)
出处:hanxi.cnblogs.com
GitHub:github.com/hanxi
Email:im.hanxi@gmail.com
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
《 Skynet 游戏服务器开发实战》
-
学习地址:
-
优惠推荐码:
2CZ2UA5u
-
可以先免费试学前 2 章内容