學習數據結構Day3

棧和隊列

 

  • 棧是一種線性結構,相比數組
  • 他對應的操作是數組的子集
  • 只能從一端進入,也只能從一端取出
  • 這一端成爲棧頂

棧是一種先進後出的數據結構,Last In First Out(LIFO)

  • 程序調用的系統棧
  • 棧的應用:無處不在的Undo操作(撤銷)

 

棧的實現

Stack<E>

  • void push(E)
  • E pop()
  • E peek()
  • int getSize()
  • boolean isEmpty()

 

將自己寫的棧設置爲接口,然後用第一天的動態數組實現這個接口。因爲有了上一個自己做的動態數組,所以棧的形

 

成是非常方便的。

 

public class ArrayStack<E> implements Stack<E> {

    DynamicArray<E> array;

    public ArrayStack(int capacity){
        array = new DynamicArray<E>(capacity);
    }

    public ArrayStack(){
        array = new DynamicArray<E>();
    }

    @Override
    public int getSize() {
        return array.getSize();
    }

    @Override
    public void push(E e) {
        array.addLast(e);
    }

    @Override
    public boolean isEmpty() {
        return array.isEmpty();
    }

    @Override
    public E pop() {
        return array.removeLast();
    }

    @Override
    public E peek() {
        return array.getLast();
    }

    public int getCapacity(){
        return array.capacity();
    }

    @Override
    public String toString(){
        StringBuilder builder = new StringBuilder();
        builder.append("stack:");
        builder.append("[");
        for (int i = 0; i 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章