两个队列实现一个栈
2015-10-14 08:57
337 查看
题目:用两个队列模拟一个栈,即用两个队列的出队和入队操作,来实现栈的出栈和入栈操作。
思路:稍微画下草图,便不难想出该题的解决方法,思路如下:
假设有两个队列Q1和Q2,当二者都为空时,入栈操作可以用入队操作来模拟,可以随便选一个空队列,假设选Q1进行入栈操作,现在假设a,b,c依次入栈了(即依次进入队列Q1),这时如果想模拟出栈操作,则需要将c出栈,因为在栈顶,这时候可以考虑用空队列Q2,将a,b依次从Q1中出队,而后进入队列Q2,将Q1的最后一个元素c出队即可,此时Q1变为了空队列,Q2中有两个元素,队头元素为a,队尾元素为b,接下来如果再执行入栈操作,则需要将元素进入到Q1和Q2中的非空队列,即进入Q2队列,出栈的话,就跟前面的一样,将Q2除最后一个元素外全部出队,并依次进入队列Q1,再将Q2的最后一个元素出队即可。
实现代码如下:
?
完整的代码(用的以前写的链式队列)如下:
?
测试结果:
思路:稍微画下草图,便不难想出该题的解决方法,思路如下:
假设有两个队列Q1和Q2,当二者都为空时,入栈操作可以用入队操作来模拟,可以随便选一个空队列,假设选Q1进行入栈操作,现在假设a,b,c依次入栈了(即依次进入队列Q1),这时如果想模拟出栈操作,则需要将c出栈,因为在栈顶,这时候可以考虑用空队列Q2,将a,b依次从Q1中出队,而后进入队列Q2,将Q1的最后一个元素c出队即可,此时Q1变为了空队列,Q2中有两个元素,队头元素为a,队尾元素为b,接下来如果再执行入栈操作,则需要将元素进入到Q1和Q2中的非空队列,即进入Q2队列,出栈的话,就跟前面的一样,将Q2除最后一个元素外全部出队,并依次进入队列Q1,再将Q2的最后一个元素出队即可。
实现代码如下:
?
?
相关文章推荐
- Linux下高并发socket最大连接数所受的各种限制
- 在 CentOS 7 中安装并使用自动化工具 Ansible
- win10中安装的第三方播放器播放视频总出现颜色失真怎么办?
- Nagios各组件简述及nrpe详解
- 设置3D模型在2DUI界面中的显示,要设置所有的layer
- tomcat apr安装
- 关于UIGestureRecognizer的认识
- 如何抓取Js动态生成数据且以滚动页面方式分页的网页
- IOS中WebView的使用
- #蓝懿iOSi学习的日子#2015年10月14日
- 真不知道起什么名字了
- epub3 in action: epub3文件格式简介
- 在 CentOS 7 中安装并使用自动化工具 Ansible
- 数据库操作类
- javascript与常用正则表达式
- 咨询的奥秘
- Spring+SpringMVC+mybatis+easyui整合实例(一)实例介绍
- 在 CentOS 7 中安装并使用自动化工具 Ansible
- IOS Xib使用——为控制器添加Xib文件
- 理解Java对象序列化