跟着樣子自己寫一個棧
package demoStack; import java.util.Arrays; public class Stack { private int size ; //數組的大小 private int top ; //頭部指針 private char [] stackArray ; //模擬棧的數組 public Stack(int size) { super(); this.size =size ; stackArray = new char[size]; this.top = -1 ; ////初始化棧的時候由於棧內沒有元素,棧頂下標設為-1 } public static void main(String[] args) { // TODO Auto-generated method stub Stack stack = new Stack(4); System.out.println("棧是否為空:"+stack.empty()); stack.push('a'); stack.push('b'); stack.push('c'); stack.push('d'); stack.push('e'); char peek = stack.peek(); System.out.println("棧頂的元素是:"+peek); char pop = stack.pop(); System.out.println("出棧的元素是"+pop); int search = stack.search('b'); System.out.println("b的位置下標是:"+search); stack.traverse(); } //測試堆棧是否為空。 public boolean empty() { return (top==-1)? true :false ; } //查看堆棧頂部的對象,但不從堆棧中移除它 public char peek(){ return stackArray[top]; } //移除堆棧頂部的對象,並作為此函數的值返回該對象。 public char pop() { if(empty()) { System.out.println("Stack is Empty"); return 0; } return stackArray[top--]; } public void doubleStack() { char [] newStackArray = new char [size*2] ; for(int i=0;i<size;i++) { newStackArray[i] = stackArray[i]; } size = size * 2; stackArray = newStackArray ; } //把項壓入堆棧頂部。 public void push(char ch) { if(top ==size-1) { //棧已滿了,需要擴容 doubleStack(); } stackArray[++top] = ch; } //返回對象在堆棧中的位置,以 1 為基數 public void traverse() { System.out.println("遍歷棧里的元素"); for(int i=top;i>=0;i--) { System.out.println(stackArray[i]); } } public int search(char ch) { for(int i=0;i<=top;i++) { if( ch == stackArray[i]) { return i; } } return -1; } }