package com.coding.basic.queue; import java.util.NoSuchElementException; /** * 用数组实现循环队列 * @author kai * * @param <E> */ 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 int size() { return (rear - front + DEFAULT_SIZE) % DEFAULT_SIZE; } public void enQueue(E data) { if((rear+1) % DEFAULT_SIZE == front){ throw new IndexOutOfBoundsException("Queue overflow"); } rear = (rear+1) % DEFAULT_SIZE; elementData[rear] = data; } public E deQueue() { if(isEmpty()){ throw new NoSuchElementException("Queue underflow"); } Object item = elementData[front]; front = (front + 1) % DEFAULT_SIZE; return (E) item; } }