用LinkedList實現棧

棧的定義:
棧(Stack)是限制僅在一端進行插入和刪除運算的線性表。
通常稱插入和刪除的這一端爲棧頂,另一端爲棧底。
當表中沒有元素時稱爲空棧。
"棧"也被稱爲"後進先出"的容器。同其他Java容器一樣,壓進去與彈出來的東西都是Object,所以除非你只用Object的功能,否則就必須對彈出來的東西進行類型轉換。
LinkedList的方法能直接實現棧的功能,所以你完全可以不寫stack而直接使用LinkedList。
import java.util.LinkedList;
public class MyStack 
{
   private LinkedList list = new LinkedList();
   public int StackLength()//返回棧的長度
   {
	   return list.size();
   }
   public boolean StackEmpty()//判斷棧是否爲空
   {
	   return list.isEmpty();
   }
  
   public void push(Object o)//進棧
   {
	   list.addFirst(o);
   }
   public Object pop()//出棧
   {
	   if(!list.isEmpty())
	  {
		   return list.remove();
	  }
	     return "棧內無元素";
   }
   public Object peek()//顯示棧頭元素
   {
	   return list.getFirst();
   }
   public void clear()//清除棧
   {
	   list.clear();
   }
   public static void main(String[] args)//棧MyStack測試
   {
	   MyStack stack = new MyStack();
	   System.out.println(stack.StackEmpty());
	   stack.push("a");
	   stack.push("b");
	   stack.push("c");
	   stack.push("d");
	   stack.push("e");
	   stack.push("f");
	   System.out.println(stack.StackLength());
	   System.out.println(stack.peek());
	   System.out.println(stack.pop());
	   System.out.println(stack.pop()); 
	   System.out.println(stack.peek());
	   stack.clear();
	   stack.push("t");
	   stack.push("s");
	   System.out.println(stack.pop());
	   System.out.println(stack.StackLength());
	   System.out.println(stack.peek());		   
   }
   
}

結果
true
6
f
f
e
d
s
1
t
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章