第五十七题(用俩个栈实现队列)
来源:互联网 发布:财务管理与大数据 编辑:程序博客网 时间:2024/06/05 15:42
57.用俩个栈实现队列。
题目:某队列的声明如下:
template<typename T> class CQueue
{
public:
CQueue() {}
~CQueue() {}
void appendTail(const T& node); // append a element to tail
void deleteHead(); // remove a element from head
private:
Stack<T> m_stack1;
Stack<T> m_stack2;
题目:某队列的声明如下:
template<typename T> class CQueue
{
public:
CQueue() {}
~CQueue() {}
void appendTail(const T& node); // append a element to tail
void deleteHead(); // remove a element from head
private:
Stack<T> m_stack1;
Stack<T> m_stack2;
};
思路:
使用m_stack1的push操作模拟队列的入队操作,出队操作时,队首元素在m_stack1底部,将m_stack1元素全部倒入m_stack2中,将出队操作转换为m_stack2的pop操作。
代码:
template<typename T> class CQueue{public:CQueue() {}~CQueue() {}void appendTail(const T& node); // append a element to tailvoid deleteHead(); // remove a element from headprivate:stack<T> m_stack1;stack<T> m_stack2;};template<typename T> void CQueue<T>::appendTail(const T& node){m_stack1.push(node);}template<typename T>void CQueue<T>::deleteHead(){if (m_stack2.empty()){if (m_stack1.empty()){cout << "queue empty!" << endl;return;}while (!m_stack1.empty()){m_stack2.push(m_stack1.top());m_stack1.pop();}}m_stack2.pop();}
0 0
- 第五十七题(用俩个栈实现队列)
- 【100题】第五十七题 用两个栈实现队列
- 用两个栈实现队列 【微软面试100题 第五十七题】
- 第五章(队列)
- JAVA学习第五十七课 — IO流(十一)
- 学习淘淘商城第五十七课(接收Queue消息)
- 剑指offer第五题(栈和队列)
- 剑指offer第五题【用两个栈实现队列】c++实现
- php学习 第五十七节
- J2SE(十七)Java之集合框架(2)队列
- 剑指Offer第五题(Java实现)
- (十七)-利用UITableView实现个人信息界面
- JAVA十七周实习(后期实现)
- 操作系统刷题(十七)
- Android实战简易教程-第五十七枪(分享小米手电筒源码)
- 一起talk C栗子吧(第五十七回:C语言实例--main函数的参数)
- 微软面试100题-57 (用俩个栈实现队列)
- 第五章 队列
- SequoiaDB数据库的一般概念介绍
- RSA 数据加密,数字签名算法
- 一个软件系统的架构到底应该包含些什么?
- 爱立信是如何落后于华为的
- MySQL性能调优:一个真实案例的解析
- 第五十七题(用俩个栈实现队列)
- QTP无法录制下拉菜单的解决方法
- 压缩&&解压命令汇总
- 异常机制Exception
- OpenStack Neutron中的dhcp agent实现
- Android开发创建虚拟机点击ok始终无反应的解决办法
- 实现邮件分享功能
- 我不问+你不说=误解
- 限制在前台显示的字符串字符个数