利用两个栈实现队列---入队和出队
2016-06-01 10:11
295 查看
栈是先入后出,队列是先入先出。根据这个思想,可以用一个栈作为入队,另一个栈作为出队。只要把第一个栈的栈顶的元素压入第二个栈就好了,出队的时候输出第二个栈的栈顶,如果第二个栈的空了就需要不断操作从第一个栈的栈顶压入第二个栈,但是如果第一个栈也空了,那就说明所有元素都输出来了。
package stackAndQuence; import java.util.Stack; /** * 使用两个栈实现队列,出队和入队 * @author duola * */ public class stackToQuence { static Stack<Integer> s1=new Stack<Integer>(); static Stack<Integer> s2=new Stack<Integer>(); //在尾部追加元素, public void addtail(int a) { s1.push(a); } //删除元素, public int dele() { if(s1.size()+s2.size()!=0){ if(s2.isEmpty()) //即使新入栈一个元素。但是只要s2不是空的就一定要保证把s2的栈顶输出,直到s2空 s1tos2(); return s2.pop(); } else { return -1; } } public void s1tos2(){ while(!s1.isEmpty()){ s2.push(s1.pop()); } } public static void main(String [] args) { stackToQuence q=new stackToQuence(); q.addtail(0); q.addtail(1); q.addtail(3); q.addtail(5); System.out.print(q.dele()); q.addtail(7); System.out.print(q.dele()); } }
相关文章推荐
- C#线程队列用法实例分析
- 算法系列15天速成 第九天 队列
- C++基于栈实现铁轨问题
- C语言单链队列的表示与实现实例详解
- C语言栈的表示与实现实例详解
- C语言实现颠倒栈的方法
- 算法系列15天速成 第十天 栈
- mysql 队列 实现并发读
- C#队列Queue用法实例分析
- C#多线程处理多个队列数据的方法
- C语言循环队列的表示与实现实例详解
- C++循环队列实现模型
- C#内置队列类Queue用法实例
- 一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out
- Array栈方法和队列方法的特点说明
- C#通过链表实现队列的方法
- java数据结构之java实现栈
- C#队列Queue多线程用法实例
- C#数据结构与算法揭秘五 栈和队列
- JAVA 虚拟机 栈