package com.coding.basic.queue;
/**
* 用数组实现循环队列
* @author liuxin
*
* @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;
}
public void enQueue(E data) {
if ((rear+1)%DEFAULT_SIZE==front) {
throw(new ArrayIndexOutOfBoundsException());
}
else {
elementData[rear]=data;
rear=(rear+1)%DEFAULT_SIZE;
}
}
public E deQueue() {
if (isEmpty()) {
throw(new NullPointerException());
}
else {
int index=front;
front=(front+1)%DEFAULT_SIZE;
return (E) elementData[index] ;
}
}
}