package com.ecust.jvm5;
public class CircleQueue <E> {
private final static int DEFAULT_SIZE = 10;
private int count = 0;
//用数组来保存循环队列的元素
private Object[] elementData = new Object[DEFAULT_SIZE] ;
//队头
private int front = 0;
//队尾
private int rear = 0;
public boolean isEmpty() {
return count == 0;
}
public int size() {
return count;
}
public void enQueue(E data) {
if (count == DEFAULT_SIZE ) {
throw new RuntimeException();
}
elementData[front] = data;
front = (front + 1) % DEFAULT_SIZE;
count++;
}
public E deQueue() {
if (count == 0) {
return null;
}
count--;
E e = (E)elementData[rear];
rear = (rear + 1) % DEFAULT_SIZE;
return e;
}
public static void main(String[] args) {
CircleQueue<Integer> queue = new CircleQueue<>();
queue.enQueue(1);
queue.enQueue(2);
queue.enQueue(3);
queue.enQueue(4);
queue.enQueue(5);
queue.enQueue(6);
System.out.println(queue.deQueue());
System.out.println(queue.deQueue());
System.out.println(queue.deQueue());
System.out.println(queue.deQueue());System.out.println(queue.deQueue());System.out.println(queue.deQueue());
System.out.println(queue.deQueue());
queue.enQueue(7);
queue.enQueue(8);
queue.enQueue(9);
queue.enQueue(0);
queue.enQueue(1);
System.out.println(queue.deQueue());
System.out.println(queue.deQueue());
System.out.println(queue.deQueue());
System.out.println(queue.deQueue());
System.out.println(queue.deQueue());
System.out.println(queue.deQueue());
}
}