堆栈和队列的实现
来源:互联网 发布:程序员用外星人 编辑:程序博客网 时间:2024/03/28 17:20
1.使用数组实现,代码和结果如下所示:
要求:
写Stack.java,实现堆栈功能,使用int数组保存数据特点:先进后处 后进先出
写Queue.java,实现队列功能,使用int数组保存数据特点:先进先出 后进后出 使用Test.java对堆栈和队列进行测试
如下所示,分别为实现方法:
首先实现stack.java类,其代码如下所示:
package ex.md05;public class Stack{private int[] a=new int[1000];private int i=0;public void push(int m){ a[++i]=m;}public int pop(){ if(i>0) { return a[i--]; } else return -1;}}接着实现队列Queue.java代码,具体如下所示:
package ex.md05;public class Queue{ int[] a=new int[1000];private int i=1;public void in(int m){ a[i++]=m;}public int out(){ int k=1; int index=0; int temp=a[k]; for(int j=k;j<i;j++) { a[j-1]=a[j]; index++; } i=index; return temp;}}最后,我们实现测试类Test.java,观察逻辑是否正确
package ex.md05;public class Test {public static void main(String[] args) {Stack stack = new Stack();//stack.pop();System.out.println("Stack push()---1-200--------");for(int i=1; i<=200; i++){stack.push(i);}System.out.println("Stack pop()---1-100--------");for(int i=1; i<=100; i++){System.out.println("pop:" + stack.pop());}System.out.println("Stack push()---201-300--------");for(int i=201; i<=300; i++){stack.push(i);}System.out.println("Stack pop()---1-200--------");for(int i=1; i<=200; i++){System.out.println("pop:" + stack.pop());}Queue queue = new Queue();//queue.out();System.out.println("Queue in()---1-200--------");for(int i=1; i<=200; i++){queue.in(i);}System.out.println("Queue out()---1-100--------");for(int i=1; i<=100; i++){System.out.println("out:" + queue.out());}System.out.println("Queue in()---201-300--------");for(int i=201; i<=300; i++){queue.in(i);}System.out.println("Queue out()---1-200--------");for(int i=1; i<=200; i++){System.out.println("out:" + queue.out());}}}
编译运行之后,我们能够看到运行结果如下所示:
根据分析,我们的运行结果是正确的(以上只是部分结果,下面是运行后的所有结果,请下载查看http://download.csdn.net/my)
2.使用list来实现功能,代码如下所示:
写MyStack类,实现堆栈功能。在类中使用ArrayList保存数据。
写MyQueue类,实现队列功能。在类中使用ArrayList保存数据。
使用Test.java测试堆栈和队列
首先实现MyStack.java代码:
package sample;import java.util.*;public class MyStack{List<Integer> list = new ArrayList<Integer>(); Iterator it=list.iterator();int index=0;public MyStack(){}public void push(Integer i){ list.add(i); index++;}public Integer pop(){ if(!(list.isEmpty())) { index--; return (Integer)list.remove(index); } return null;}}实现MyQueue.java类:
package sample;import java.util.*;public class MyQueue{List<Integer> list = new ArrayList<Integer>(); Iterator it=list.iterator();int index=0;public MyQueue(){}public void in(Integer i){ list.add(i); index++;}public Integer out(){ if(!(list.isEmpty())) { Integer temp=0; temp=(Integer)list.get(0); list.remove(0); index--; return temp; } return null;}}使用Test类进行测试,代码如下所示:
package sample;public class Test {public static void main(String[] args) {MyStack stack = new MyStack();stack.push(new Integer(1));stack.push(new Integer(2));stack.push(new Integer(3));System.out.println(stack.pop());stack.push(new Integer(4));System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());System.out.println(stack.pop());stack.push(new Integer(5));System.out.println(stack.pop());System.out.println(stack.pop());System.out.println("------------------------");MyQueue queue = new MyQueue();queue.in(new Integer(1));queue.in(new Integer(2));queue.in(new Integer(3));System.out.println(queue.out());queue.in(new Integer(4));System.out.println(queue.out());System.out.println(queue.out());System.out.println(queue.out());System.out.println(queue.out());queue.in(new Integer(5));System.out.println(queue.out());System.out.println(queue.out());}}结果如下所示:
以上就是堆栈的两种实现方法
1 0
- 堆栈和队列的实现
- 堆栈和队列的实现
- 用双链表实现的堆栈和队列
- 堆栈和队列的java实现
- 堆栈,队列的实现
- Java 实现堆栈和队列
- python实现堆栈和队列
- python实现堆栈和队列
- 关于树的队列实现和堆栈实现的分析
- 堆栈及队列的实现
- 队列和堆栈实现二叉树的遍历
- java中堆栈和队列的实现方式
- 队列和堆栈的区别
- 堆栈和队列的应用
- 用数组实现堆栈和队列
- 回文字(堆栈和队列实现)
- java用链表实现堆栈和队列
- 用数组实现堆栈和队列
- hibernate一级缓存和二级缓存的区别
- Increase Charisma Points
- Cheapest Palindrome(区间dp)
- 基本数据类型double和封装类型Double引起的bug
- HTML5新标签 | 说明
- 堆栈和队列的实现
- [LeetCode]--295. Find Median from Data Stream(Max-Heap & Min-Heap)
- Android 内存泄漏总结(转)
- 从省赛回来之后到暑假集训和自己感受
- Delphi XE8移动应用开发中Android权限设置
- BZOJ-4034- [HAOI2015]T2-树链剖分+线段树
- 使用windeployqt.exe进行依赖查找打包
- hdu1233 还是畅通工程(MST最小生成树)
- LLVM和Clang背后的故事