Queue也是一種線性結構,相比數組,隊列的操做是數組的子集。java
只能從隊尾添加元素,從隊首取出元素。git
和生活中的排隊是同樣的,先到先得。github
LinkedList類實現了Queue接口,所以咱們能夠把LinkedList當成Queue來用。下面咱們用上一節的動態數組來實現本身的隊列這種數據結構。數組
有了實現棧的經驗,如今實現隊列會比較容易些。數據結構
先寫隊列的接口Queue.javaide
public interface Queue<E> { void enqueue(E e); // 入隊列 E dequeue(); //出隊列 E getFront(); //獲取隊首元素 int getSize(); //獲取隊列中元素個數 boolean isEmpty(); }
而後實現這些接口,一樣基於上一節實現的動態數組。spa
public class ArrayQueue<E> implements Queue<E> { private Array<E> array; public ArrayQueue(int capacity) { array = new Array<>(capacity); } public ArrayQueue() { array = new Array<>(); } @Override public void enqueue(E e) { array.addLast(e); } @Override public E dequeue() { return array.removeFirst(); } @Override public E getFront() { return array.getFirst(); } @Override public int getSize() { return array.getSize(); } @Override public boolean isEmpty() { return array.isEmpty(); } }
這樣咱們的隊列就實現了3d
代碼: https://github.com/zhang-anan/DataStructure/tree/master/src/cc/myall/demo03code