public class ArrayQueue<E> implements Queue<E> {
public static final int CAPACITY = 100;
private int size;
private int firstIndex;
private E[] data;
public ArrayQueue(int capacity) {
data = (E[]) new Object[capacity];
size = 0;
firstIndex = 0;
}
@Override
public int size() { return size; }
@Override
public boolean isEmpty() { return (size == 0); }
@Override
public void enqueue(E e) throws IllegalStateException {
if (size == data.length) throw new IllegalStateException("Queue is full");
int index = (firstIndex + size) % data.length;
data[index] = e;
size++;
}
@Override
public E dequeue() {
if (size == 0) return null;
E temp = data[firstIndex];
data[firstIndex] = null;
firstIndex = (firstIndex + 1) % data.length;
size--;
return temp;
}
@Override
public E first() {
if (size == 0) return null;
return data[firstIndex];
}
}
近期评论