用stack实现queue-这是一个很常见的面试题
来源:互联网 发布:免费语音合成软件 编辑:程序博客网 时间:2024/05/16 14:55
自己用stack实现的queue,能通过一些基本的测试,如果大家能在其中找到错误希望给予指点:
#include<iostream>#include<cassert>#include<stack>using namespace std;template <class T>class Queue{private:T back_data;stack<T> m_stack1;stack<T> m_stack2;public:Queue() {}~Queue() {}void push_back(int data);void pop_front();T front();T back();};template <class T>void Queue<T>::push_back(int data) {m_stack1.push(data);back_data = data;}template <class T>void Queue<T>::pop_front() {if(m_stack2.size() == 0) {int temp;while(!m_stack1.empty()) {temp = m_stack1.top();m_stack1.pop();m_stack2.push(temp);}}if(m_stack2.size() > 0) {m_stack2.pop();}}template <class T>T Queue<T>::back() {return back_data;}template <class T> T Queue<T>::front() {if(m_stack2.size() == 0) {int temp;while(!m_stack1.empty()) {temp = m_stack1.top();m_stack1.pop();m_stack2.push(temp);}}assert(m_stack2.size() > 0);return m_stack2.top();}void main() {Queue<int> m_queue;m_queue.push_back(2);m_queue.push_back(3);cout << m_queue.back() << endl;cout << m_queue.front() << endl;m_queue.pop_front();cout << m_queue.front() << endl;m_queue.pop_front();m_queue.push_back(4);m_queue.push_back(5);m_queue.push_back(6);cout << m_queue.front() << endl;m_queue.pop_front();cout << m_queue.front() << endl;}
- 用stack实现queue-这是一个很常见的面试题
- 面试题---使用栈stack实现队列queue
- 常见笔试面试题:实现一个递增排序的单链表
- 关于autoreleasepool一个常见的面试题
- 用两个栈(Stack)实现一个队列(Queue)
- 用两个栈(Stack)实现一个队列(Queue)
- 用两个栈(Stack)实现一个队列(Queue)
- 用两个队列(Queue)实现一个栈(Stack)
- 【面向对象程序设计常见面试题】虚函数是怎么实现的?(已阅)
- 用两个stack实现queue
- 常见的面试题
- 常见的面试题
- 常见的面试题
- 常见的面试题
- 常见面试题-memcpy()实现
- 用两个stack定义一个queue
- 【数据结构】Stack和Queue的模拟实现
- C# Queue 和Stack的实现
- MFC CToolTipCtrl使用
- MongoDB随笔
- 2013年移动产业11大预测:HTML5东山再起
- css内容溢出显示省略号
- 提高 web 应用性能之 JavaScript 性能调优
- 用stack实现queue-这是一个很常见的面试题
- 今天是一个特别的日子 <^_^>
- ORA-01033: ORACLE 正在初始化或关闭
- Window7 adb server is out of date. killing解决办法,屡试不爽!
- Jetty嵌入式服务器
- C++ type cast
- Gentoo使用grub2
- Android手势监听类GestureDetector
- 有向有环图的层次布局算法(一)