/** * @author:liuxincheng * @description: * @date:created in 2019/1/22 13:49 * @modified by liuxincheng */ public class ArrayQueue<T> { /** * 队列数组 */ private T[] queue; /** * 头下标 */ private int head; /** * 尾下标 */ private int tail; /** * 元素个数 */ private int count; public ArrayQueue() { queue = (T[]) new Object[10]; // 头下标为零 this.head = 0; this.tail = 0; this.count = 0; } public ArrayQueue(int size) { queue = (T[]) new Object[size]; this.head = 0; this.tail = 0; this.count = 0; } /** * 入队 * * @param t * @author: liuxincheng * @date: 2019/1/22 13:53 * @return: boolean */ public boolean inQueue(T t) { if (count == queue.length) { return false; } // 如果不为空就放入下一个 queue[tail++ % (queue.length)] = t; count++; return true; } /** * 出队 * * @param * @author: liuxincheng * @date: 2019/1/22 13:54 * @return: T */ public T outQueue() { // 如果是空的那就不能再出栈了 if (count == 0) { return null; } count--; return queue[head++ % (queue.length)]; } /** * 查队列 * * @param * @author: liuxincheng * @date: 2019/1/22 13:55 * @return: T */ public T showHead() { if (count == 0) { return null; } return queue[head]; } /** * 判满 * * @param * @author: liuxincheng * @date: 2019/1/22 13:56 * @return: boolean */ public boolean isFull() { return count == queue.length; } /** * 判空 * * @param * @author: liuxincheng * @date: 2019/1/22 13:56 * @return: boolean */ public boolean isEmpty() { return count == 0; } }