JavaShowAlgorithm-使用2个栈实现队列
来源:互联网 发布:海森伯格矩阵图片 编辑:程序博客网 时间:2024/05/16 10:36
思路一:
我们设定s1是入栈的,s2是出栈的。
入队列,直接压到s1即可
出队列,先把s1中的元素倒入到s2中,弹出s2中的栈顶元素;再把s2的剩余元素全部倒回s1中。
缺点:
每次只要出栈一个元素就要将元素倒来倒去,麻烦!!!
思路2:
入队列时:
如果s1为空,把s2中所有的元素倒出压到s1中。否则直接压入s1
出队列时:
如果s2不为空,把s2中的栈顶元素直接弹出。否则,把s1的所有元素全部弹出压入s2中,再弹出s2的栈顶元素
思路1无条件地每次都要将元素倒来倒去,思路2出队时较思路1简单。
思路3:
我们设定s1是入栈的,s2是出栈的
入队列:直接压入元素至s1即可
出队列:如果s2不为空,把s2中的栈顶元素直接弹出。否则,把s1的所有元素全部弹出压入s2中,再弹出s2的栈顶元素
相比于方法2,入队直接压入即可~
那么,我们可以看出,思路三最简单,我们下面看下代码。
第三种方法最为优秀,实现该方法如下:
public class Stack2Queue {private Stack stack1;private Stack stack2;private int maxLength;public Stack2Queue(int capacity) {maxLength = capacity;stack1 = new Stack(capacity);stack2 = new Stack(capacity);}public boolean put(int item) {if (stack1.isFull() || maxLength == size()) {// 满了return false;}stack1.push(item);return true;}public int poll() {if (!stack2.isEmpty()) {return stack2.pop();} else {while (!stack1.isEmpty()) {stack2.push(stack1.pop());}return stack2.pop();}}public int size() {return stack1.size() + stack2.size();}}
阅读全文
0 0
- JavaShowAlgorithm-使用2个队列实现栈
- JavaShowAlgorithm-使用2个栈实现队列
- 使用2个队列实现一个栈
- 2个栈实现一个队列
- 用2个队列实现栈操作
- 2个队列实现一个栈
- 用2个栈实现队列
- 第十九题 用2个栈实现队列和用2个队列实现栈
- C++ 使用2个栈实现队列的方法(可直接编译)
- 使用栈实现队列
- 使用队列实现栈
- 怎样用2个栈实现队列(java)
- 面试题7(1):用2个栈实现队列
- 剑指offer 用2个栈实现队列
- 栈和队列之用2个栈实现一个队列
- 连个队列实现一个栈
- 用有限个栈实现队列
- 简单使用栈实现队列
- 点评cat-client解析
- Git rebase 和git merge 使用技巧20171119
- 模拟实现strcpy ,strstr,strcat,strcmp,memcpy,memmove
- Netty学习笔记(二) Channel和ChannelFuture
- SpringBoot事务管理
- JavaShowAlgorithm-使用2个栈实现队列
- Java并发编程札记-(一)基础-05线程安全问题
- 中介者模式
- 安卓VectorDrawable矢量图在原图基础上添加点击时 ripple 水波纹特效
- random随机数
- Eclipse插件springsource-tool-suite的下载和安装
- C语言_可变参数列表解析
- java基础(三)
- LeetCode:Best Time to Buy and Sell Stock with Cooldown