堆疊和佇列的實現
阿新 • • 發佈:2019-01-28
1.使用陣列實現,程式碼和結果如下所示:
要求:
寫Stack.java,實現堆疊功能,使用int陣列儲存資料特點:先進後處 後進先出
寫Queue.java,實現佇列功能,使用int陣列儲存資料特點:先進先出 後進後出 使用Test.java對堆疊和佇列進行測試
如下所示,分別為實現方法:
首先實現stack.java類,其程式碼如下所示:
接著實現佇列Queue.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; } }
最後,我們實現測試類Test.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; } }
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());
}
}
結果如下所示:
以上就是堆疊的兩種實現方法