使用两个栈实现队列
来源:互联网 发布:spss如何快速录入数据 编辑:程序博客网 时间:2024/05/05 23:06
需求:用两个栈实现一个队列。队列的声明如下,实现它的两个函数appendTail(入队) 和deleteHead(出队)
分析:栈的特点是先进后出,而队列的特点是先进先出。在有两个栈的条件下,例如栈A和栈B,假设要实现3个元素的进队和出队操作。我们可以进行如下操作:三个元素a b c一次进入栈A,然后让c b a一次出栈,然后再让c b a一次进栈B,然后三个元素再次出栈,则输出顺序为a b c,则达到了队列先进先出的特点。
总结:当栈B不为空时,那么栈B所有元素一次进行出栈操作,如果栈B为空时,则把栈A的元素出栈,然后进入栈B
代码如下:
import java.util.Stack;/** * */public class TwoStacksToQueue { static class Test<T>{ public Stack<T> stackA = new Stack<T>(); public Stack<T> stackB = new Stack<T>(); //入队操作 public void appendTail(T t){ stackA.push(t); } //出队操作 /** * 1.如果栈B中为空时,则一次将栈A的元素出栈后进入栈B中,然后栈B出栈 * 2.如果1中操作完成,则所有元素操作已经完成 * @param * @return */ public T deleteHead(){ if(stackB.isEmpty()){ while (!stackA.isEmpty()){ stackB.push(stackA.pop()); } } if(stackB.isEmpty()){ System.out.println("no more element"); } return stackB.pop(); } } static class T{ public T(){} } public static void main(String args[]){ T t1 = new T(); T t2 = new T(); T t3 = new T(); T t4 = new T(); T t5 = new T(); Test<T> test = new Test<>(); test.appendTail(t1); test.appendTail(t2); test.appendTail(t3); test.appendTail(t4); test.appendTail(t5); test.deleteHead(); }}
阅读全文
0 0
- 使用两个队列实现栈
- 使用两个栈实现队列
- 使用两个栈实现队列
- 使用两个栈实现队列
- 栈&队列--使用两个栈实现一个队列+使用两个队列实现一个栈
- 使用两个队列实现一个栈
- 使用两个队列实现一个栈
- 算法导论 使用两个栈实现队列
- 使用两个栈实现一个队列
- 使用两个栈实现一个队列
- 使用两个队列实现一个栈
- 数据结构-使用两个栈实现一个队列
- 使用两个队列实现一个栈
- 使用两个栈实现一个队列
- 使用两个队列实现一个栈
- 使用两个栈实现一个队列
- 使用两个栈实现一个队列
- 使用两个栈实现一个队列
- 数据结构实验之查找六:顺序查找
- 排序二 选择排序
- 第11章--流类库的输入和输出
- 20171211-学习日记
- python找不到ssl模块
- 使用两个栈实现队列
- G
- Google图片加载库Glide的简单封装GlideUtils
- 20171211
- 爆客系统源码
- 51Nod 1432 独木舟 贪心
- ionic 购物车的加减框
- TIOBE 12 月排行榜:古老的 C 和后起之秀 Kotlin,谁是年度编程语言之王?
- 图片上传预览