JAVA數據結構之動態數組實現隊列

  • 使用的是自定義的動態數組實現,需要看之前的博客,動態數組

接口

public interface Queue<E>{
    int getSize();
    boolean isEmpty();
    void enqueue(E e);
    E dequeue();
    E getFront();
}

隊列

public class ArrayQueue<E>{
    private Array<E> array;

    //構造函數
    public ArrayQueue(int capacity){
        array = new Array<>(capacity);
    }
    public ArrayQueue(){
        array = new Array<>();
    }
    //獲得長度
    public int getSize(){
        return array.getSize()
    }
    //判斷是否爲空
    public boolean isEmpty(){
        return array.isEmpty();
    }
    //入隊
    public void enqueue(E e){
        array.addLast(e);
    }
    //出隊
    public E dequeue(){
        return array.removeFirst();
    }
    //去隊首元素
    public E getFront(){
        return array.getFirst();
    }

     @Override
    public String toString() {
       StringBuilder res = new StringBuilder();
       res.append("Queue: ");
       res.append("front[");
        for (int i = 0; i < array.getSize(); i++) {
            res.append(array.get(i));
            if(i!=array.getSize()-1){
                res.append(", ");
            }
        }
        res.append("] tail");
        return res.toString();
    }

}

時間複雜度

int getSize();//O(1)
boolean isEmpty();//O(1)
void enqueue(E e);//均攤O(1)
E dequeue();//O(n)
E getFront();//O(1)

因爲出隊的時間複雜度太高,所以需要循環隊列,下一講講述。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章