1. 程式人生 > >二 基於java動態數組手寫棧

二 基於java動態數組手寫棧

出棧 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(int
capacity) { 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動態數組手寫棧