
First In First Out (FIFO) 先进先出
int getSize(); // O(1)
boolean isEmpty(); // O(1)
void enqueue(E e); // O(1) 均摊
E dequeue(); // O(n) 后面会元素往前移动一位
E getFront(); // O(1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
public interface Queue<E> { int getSize();
boolean isEmpty();
// 入队 void enqueue(E e);
// 出队 E dequeue();
// 获取队首 E getFront(); }
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 int getSize() { return array.getSize(); }
@Override public boolean isEmpty() { return array.isEmpty(); }
public int getCapacity() { return array.getCapacity(); }
@Override public void enqueue(E e) { array.addLast(e); }
@Override public E dequeue() { return array.removeLast(); }
@Override 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(); } }
|
近期评论