二 基於java動態數組手寫棧
阿新 • • 發佈:2019-04-09
出棧 ram imp build getc tostring pac pub bject
package dataStucture2.stack; import dataStucture2.array.MyDynamicArray; /** * 基於動態數組手寫棧 * 設計時,棧中僅棧頂對用戶可見 * @author 李騰 * * @param <E> */ public class MyArrayStack<E> implements Stack<E> { MyDynamicArray<E> array; //有參構造 public MyArrayStack(intcapacity) { array = new MyDynamicArray<>(capacity); } //無參構造 public MyArrayStack() { array = new MyDynamicArray<>(); } @Override //獲取棧中元素個數 public int getSize(){ return array.getSize(); } @Override//判斷棧是否為空 public boolean isEmpty(){ return array.isEmpty(); } //獲取棧容量 public int getCapacity(){ return array.getCapacity(); } /* * 基於動態數組的入棧和出棧: * last in first out * 後入先出 ,壓棧 addLast,出棧removeLast,後添加的先取出來 * (non-Javadoc) * @see dataStucture2.stack.Stack#push(java.lang.Object)*/ @Override //壓棧 public void push(E e) { array.addLast(e); } @Override //出棧,後入先出,後添加的先取出來 public E pop( ) { return array.removeLast(); } @Override //獲取棧頂元素 public E peek() { return array.getLast(); } @Override //打印棧 public String toString() { StringBuilder res = new StringBuilder(); res.append("Stack: "); res.append("["); for(int i = 0 ; i < array.getSize() ; i++){ res.append(i); if(i != array.getSize() -1){ res.append(", "); } } //提醒用戶那裏是棧頂 res.append("] top"); return res.toString(); } }
棧的時間復雜度簡單分析:
二 基於java動態數組手寫棧