用俩个栈实现队列
来源:互联网 发布:java socket传输图片 编辑:程序博客网 时间:2024/06/04 18:46
某队列的声明如下:
template<typename T> class CQueue{public: CQueue() {} ~CQueue() {} void appendTail(const T& node); // append a element to tail void deleteHead(); // remove a element from headprivate: T> m_stack1; T> m_stack2;};
提示:这道题实质上是要求我们用两个栈来实现一个队列。栈是一种后入先出的数据容器,因此对队列进行的插入和删除操作都是在栈顶上进行;队列是一种先入先出的数据容器,我们总是把新元素插入到队列的尾部,而从队列的头部删除元素。
template<typename T> class CQueue {public:CQueue() {}~CQueue() {}void appendTail(const T& node); // append a element to tailvoid deleteHead(); // remove a element from headvoid printQueue();private:stack<T> m_stack1;stack<T> m_stack2;};template<typename T> void CQueue<T>::appendTail(const T& node) {if (node) {m_stack1.push(node);}}template<typename T> void CQueue<T>::deleteHead() {if (!m_stack2.empty()) {m_stack2.pop();} else {while (!m_stack1.empty()) {m_stack2.push(m_stack1.top());m_stack1.pop();}if (m_stack2.empty()) {cout << "stack empty!!!" << endl;} else {m_stack2.pop();}}}template<typename T> void CQueue<T>::printQueue() {cout << "当前栈:" << endl;while (!m_stack2.empty()) {cout << m_stack2.top() << ' ';m_stack2.pop();}while (!m_stack1.empty()) {m_stack2.push(m_stack1.top());m_stack1.pop();}while (!m_stack2.empty()) {cout << m_stack2.top() << ' ';m_stack2.pop();}cout << endl;}
0 0
- 用俩个栈实现队列
- 用俩个栈实现队列
- 57 用俩个栈实现队列
- 用俩个栈实现队列
- 队列实现
- 队列实现
- 队列实现
- 队列实现
- 队列实现
- 队列实现
- 队列实现
- 实现队列
- 队列实现
- 队列实现
- 第五十七题(用俩个栈实现队列)
- 队列的实现:顺序队列
- 队列的实现:链式队列
- 队列----循环数组实现队列
- 求树的深度
- C++文件读写详解(ofstream,ifstream,fstream
- SuperTab插件
- HDU-2553(行搜||DFS)
- 智能指针
- 用俩个栈实现队列
- Codefoces 735D Taxes(数学 哥德巴赫猜想)
- 高德地图自定义marker的图片定位的问题
- objc - 编译Runtime源码objc4-706
- CDH-5.XX 离线安装及升级步骤及安装过程常见错误
- Redis常见集群方案、Codis实践及与Twemproxy比较
- 假设有一颗二叉树,已知这棵树的节点上不均匀的分布了若干石头,石头数跟这棵二叉树的节点数相同,石头只可以在子节点和父节点之间进行搬运,每次只能搬运一颗石头。请问如何以最少的步骤将石头搬运均匀,使得每个节
- 黄金连分数
- Android 获得设备状态信息、Mac地址、IP地址