重造轮子-栈实现队列
2015-09-19 22:46
148 查看
目标:用两个栈实现一个队列数据结构
方法:栈是先入后出,队列是先入先出。那么对于入队列就是,普通的压栈操作。对于返回队列首元素呢,则是将栈B的元素全部顺序出栈,压入栈A,然后再将栈A的栈顶元素出栈。对于弹出队首元素呢,则是与返回队列首元素的操作相同。
代码:
方法:栈是先入后出,队列是先入先出。那么对于入队列就是,普通的压栈操作。对于返回队列首元素呢,则是将栈B的元素全部顺序出栈,压入栈A,然后再将栈A的栈顶元素出栈。对于弹出队首元素呢,则是与返回队列首元素的操作相同。
代码:
class Solution{ public: void push(int num){ strDataTwo.push(num); } int front(){ int tmp; if(strDataOne.empty() && strDataTwo.empty()){ cout<<"your queue is empty !!"<<endl; return -1; } if(strDataOne.empty()){ while(!strDataTwo.empty()){ tmp = strDataTwo.top(); strDataTwo.pop(); strDataOne.push(tmp); } } return strDataOne.top(); } void pop(){ int tmp; if(strDataOne.empty() && strDataTwo.empty()){ cout<<"your queue is empty !!"<<endl; return; } if(strDataOne.empty()){ while(!strDataTwo.empty()){ tmp = strDataTwo.top(); strDataTwo.pop(); strDataOne.push(tmp); } } strDataOne.pop(); } private: stack<int> strDataOne; stack<int> strDataTwo; };
相关文章推荐
- 使用GIT进行代码管理的心得
- oracle体系结构(1)
- c++(重载、覆盖、隐藏)&&什么情况下,类的析构函数应该声明为虚函数?为什么?
- C#操作excel 报:“不能更新。数据库或对象为只读。”
- linux进程通信--消息队列
- 一看就懂的ReactJs入门教程(精华版)
- 新学期新开始
- 【Xamarin 开发 IOS --IOS 页面导航概念Segue】
- hdu5451 矩阵快速幂+暴力打表循环节
- Verlet-js JavaScript 物理引擎
- JavaScript网页脚本编程良好习惯
- 第一篇博客
- yii2.0 下拉菜单 [ 2.0 版本 ]
- CSS浏览器兼容性问题
- 有时你需要停掉windows search
- java调用存储过程mysql
- 浅谈Oracle事务【转载竹沥半夏】
- VS2012中,无法嵌入互操作类型“……”,请改用适用的接口的解决方法
- 2015沈阳网络赛总结
- 自定义ViewGroup、 动画Animation