An implementation of the interface is given in Figure 3.3.
import java.util.NoSuchElementException;
public class QueueArray implements Queue {
private Object[] queue;
private int size; // size of the queue
private int top; // for next insertion
private int base; // for next removal
public QueueArray() {
queue = new Object[1];
size = top = base = 0;
}
public boolean isEmpty() {
return size == 0;
}
public void enqueue(Object item) {
if (size == queue.length) {
// expand the queue
Object[] newQueue = new Object[2*queue.length];
System.arraycopy(queue, base, newQueue, 0, size-base);
System.arraycopy(queue, 0, newQueue, size-base, base);
queue = newQueue;
base = 0;
top = size;
}
queue[top++] = item;
if (top == queue.length) {
top = 0;
}
++size;
}
public Object dequeue() {
if (size == 0) {
throw new NoSuchElementException();
} else {
Object item = queue[base++];
if (base == queue.length) {
base = 0;
}
--size;
return item;
}
}
}
|