java使用两个栈模拟队列的实现
2016-03-21 13:40
513 查看
1.使用栈模拟队列
代码的实现借鉴上两篇博客中使用链表实现的栈public class StackToQueue { LinkStack s1 = new LinkStack(); LinkStack s2 = new LinkStack(); /*这里使用两个栈来模拟队列,s1主要负责入栈,s1栈顶存储的都是最近存储的元素,s2栈顶存储的是s1的栈低元素 * 所以每次入栈的时候要判断s1是否为空,如果s1不为空,则可以直接入栈,否则需要让s2出栈,出栈的元素依次 * 压如s1,出栈的时候相反,如果s2不为空,则直接出栈,否则需要把s1中的元素依次出栈,然后压入s2. * */ void push(T data){ if(s1.top==null&& s2.top==null) s1.push(data); else if(s1.top!=null){ s1.push(data); }else{ while(!s2.isEmpty()) s1.push(s2.pop()); } } T pop(){ if(s2.top==null){ while(!s1.isEmpty()) s2.push(s1.pop()); } return s2.pop(); } boolean isEmpty(){ if(s1.isEmpty() && s2.isEmpty()) return true; else return false; } public static void main(String[] args) { // TODO Auto-generated method stub StackToQueue stackToQueue = new StackToQueue(); stackToQueue.push(1); stackToQueue.push(11); stackToQueue.push(111); stackToQueue.push(1111); stackToQueue.push(11111); stackToQueue.push(111111); while(!stackToQueue.isEmpty()){ System.out.println(stackToQueue.pop()); } } }
2.运行结果
相关文章推荐
- Eclipse编码总结
- Java对象的序列化与反序列化
- eclipse debug窗口设置
- java多线程
- java的静态导入
- Make sure you have Java JDK or JRE installed and the required ports are free
- java中static final与final的不同
- web项目启动报java.lang.ClassNotFoundException
- java中static作用详解
- Java过滤器与SpringMVC拦截器之间的关系与区别
- java类方法执行顺序
- Java Web应用中调优线程池的重要性
- java队列的链表实现
- struts2 上传文件相关
- 第二章 Java内存区域与内存溢出异常
- JAVA基础英语单词表(中)
- 利用spring AOP 和注解实现方法中查cache-我们到底能走多远系列(46)
- Java中的初始化
- java优化占用内存的方法(一)
- Java内存区域与内存溢出异常(二)