package com.aaront.exercise.generic; 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; } public boolean isFull() { if(rear == elementData.length && front == 0) return true; return front == rear + 1; } public int size() { if(rear < front) return elementData.length - front + rear; return rear - front; } public void enQueue(E data) { if (isFull()) return; if(rear == elementData.length) rear = 0; elementData[rear++] = data; } public E deQueue() { if (isEmpty()) return null; if(front == elementData.length) front = 0; Object element = elementData[front++]; return (E) element; } }