標籤:java 鏈表 棧
大家知道,棧的實現可以是鏈表或數組或其他多種方式,鏈表的好處就是不會限制大小而且出棧和入棧速度都很快。下面我們來看代碼:
public class ListNode{ Object val; ListNode next = null; public ListNode(Object val){ this.val = val; }}
public interface StackInterf { //定義壓棧操作 public void push(Object o); //定義出棧操作 public Object pop() throws Exception; //返回棧頂元素 public Object peek(); //返回棧大小 public int size(); //判斷是否為空白 public boolean isEmpty(); //tostring public String toString();}
public class LinkedStack implements StackInterf{ ListNode top;//指向棧頂 private int size;//定義棧大小 public LinkedStack(){ top=null; size=0; } public void push(Object o){ ListNode node = new ListNode(o); node.next = top; top = node; size++; } public Object pop()throws Exception{ if(isEmpty()){ throw new Exception("stack is empty!"); } Object result = top.val; top = top.next; size--; return result; } public Object peek(){ Object result = top.val; return result; } public int size(){ return size; } public boolean isEmpty(){ if(size!=0){ return false; } return true; }}
public class Test{ public static void main(String[] args){ LinkedStack stack = new LinkedStack(); //把1到10依次入棧 for(int i=0;i<10;i++){ stack.push(i); } //連續5次出棧操作 for(int i=0;i<5;i++){ try { stack.pop(); } catch (Exception e) { e.printStackTrace(); } } System.out.println("棧為空白嗎?: " + stack.isEmpty()); System.out.println("棧的大小為: " + stack.size()); System.out.println("棧頂元素為: " + stack.top.val); System.out.println("棧頂元素為: " + stack.peek()); }}
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
棧的鏈表實現(JAVA)