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