java 棧實現
阿新 • • 發佈:2018-12-26
棧---先進後出的資料結構,與佇列相反。
package aobi.com.task; public class StackByBianca <E>{ private Object[] stack = null; private int top = -1; private int maxTop = 0; StackByBianca(){ this(10); } StackByBianca(int initSize){ if(initSize > 0){ this.maxTop = initSize; stack = new Object [initSize]; top = -1; }else{ throw new RuntimeException("初始化大小不能小於0:" + initSize); } } public boolean isEmpty(){ return top == -1 ? true:false; } public boolean push(E e){ if(top == maxTop-1) expansionStack();//擴棧 stack[++top] = e; return true; } public E pop(){ if(isEmpty()) throw new RuntimeException("棧為空!"); return (E) stack[top--]; } public E peek(){ if(isEmpty()) throw new RuntimeException("棧為空!"); return (E) stack[top]; } public int search(E e){ int i = top; while(i >= 0){ if(stack[i] == e) break; i--; } return i+1; } private void expansionStack(){ Object [] newStack = new Object [maxTop+10]; int newTop = -1; while(isEmpty()){ newStack[++newTop]=pop(); } this.stack = newStack; this.maxTop+=10; } }