package com.github.orajavac.coding2017.basic.queue;
public class CircleQueue <E>{
private final static int DEFAULT_SIZE = 8;
//用数组来保存循环队列的元素
private Object[] elementData = new Object[DEFAULT_SIZE] ;
//队头
private int front = 0;
//队尾
private int rear = 0;
public boolean isEmpty() {
if (front==0&&rear==0){
return true;
}
return false;
}
public int size() {
return DEFAULT_SIZE;
}
public void enQueue(E data) {
if (rear==DEFAULT_SIZE&&elementData[0]==null){
rear = 0;
elementData[rear]=data;
}else if (elementData[rear]==null){
elementData[rear]=data;
}else{
throw new RuntimeException("队列已满");
}
rear++;
}
@SuppressWarnings("unchecked")
public E deQueue() {
Object o = elementData[front];
elementData[front] = null;
front++;
if (front == DEFAULT_SIZE){
front = 0;
}
return (E)o;
}
}