棧的陣列實現
阿新 • • 發佈:2018-12-23
棧的實現方式一:陣列實現
package stack; /** * * <p> * 功能描述: * </p> * @author 鍾良健 * @company * @version V1.0 */ public class stackUtil { private Object[] stack; private int size; public stackUtil(){ stack=new Object[10]; } /** * * 建構函式 * 1、自定義棧的容量,注意容量必須大於0,否則預設容量為10 * @param count 棧容量 */ public stackUtil(int count){ if(count>=0){ stack=new Object[count]; return; } stack=new Object[10]; } /** * * 方法描述: 返回棧實際大小 * @return * @author 鍾良健 */ public int getSize(){ return size; } /** * * 方法描述: * 1、實現動態陣列防止新增資料時陣列越界異常 * 2、具體詳細可參考list集合原始碼 * @author 鍾良健 */ public void ensureCapacity(){ if(getSize()==stack.length){ Object newStack=new Object[getSize()*3/2+1]; System.arraycopy(stack, 0, newStack, 0, getSize()); stack=(Object[]) newStack; } } /** * * 方法描述: * @param obj * @author 鍾良健 */ public void push(Object obj){ ensureCapacity(); stack[size]=obj; size++; } /** * * 方法描述: * @author 鍾良健 */ public Object pop(){ return stack[--size]; } /** * * 方法描述: 列印棧內元素 * @author 鍾良健 */ public void printfStack(){ for(int i=0;i<getSize();i++){ System.out.println(stack[i]); } } public static void main(String[] args) { stackUtil stack=new stackUtil(); stack.push("1"); stack.push("2"); stack.push("3"); stack.push("5"); stack.push("6"); stack.push("7"); stack.push("8"); stack.push("9"); stack.push("10"); stack.push("11"); stack.push("12"); //System.out.println(stack.pop()); stack.printfStack(); System.out.println("--"+stack.getSize()); } }