package queue; import java.util.Arrays; /** * Created by gongxun on 2017/4/24. * 用数组实现循环队列 */ public class CircleQueue<E> { private final static int DEFAULT_SIZE = 10; //用数组来保存循环队列的元素 private Object[] elementData = new Object[DEFAULT_SIZE]; //队头 private int front = 0; //队尾 private int rear = 0; public boolean isEmpty() { return front == rear && elementData[front] == null; } public int size() { if (isEmpty()) return 0; return front - rear > 0 ? DEFAULT_SIZE - front + rear : front - rear < 0 ? rear - front : DEFAULT_SIZE; } public void enQueue(E data) { if (size() != DEFAULT_SIZE) { elementData[rear] = data; if (rear == DEFAULT_SIZE - 1) rear = 0; else rear++; } } public E deQueue() { E removeEle = null; if (!isEmpty()) { removeEle = (E) elementData[front]; elementData[front] = null; if (front == DEFAULT_SIZE - 1) front = 0; else front++; } return removeEle; } @Override public String toString() { return Arrays.toString(elementData); } }