堆栈和队列的实现

来源:互联网 发布:程序员用外星人 编辑:程序博客网 时间: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
原创粉丝点击