public class ArrayQueue implements Queue
{
static final int defaultsize = 100;
Object data[];
int head;
int tail;
int size;
ArrayQueue(int maxsize)
{
data = new Object[maxsize];
head = 0;
tail = 0;
size = maxsize;
}
ArrayQueue()
{
data = new Object[defaultsize];
head = 0;
tail = 0;
size = defaultsize;
}
public void enqueue(Object elem)
{
Assert.notFalse((tail+1)%size != head, "Queue Full");
data[tail] = elem;
tail = (tail + 1) % size;
}
public Object dequeue()
{
Object retval;
if (head == tail)
return null;
retval = data[head];
head = (head + 1) % size;
return retval;
}
public boolean empty()
{
return head == tail;
}
public String toString()
{
String result = "[";
int tmpHead = head;
if (tmpHead != tail)
{
result = result + data[tmpHead];
tmpHead = (tmpHead + 1) % size;
while (tmpHead != tail)
{
result = result + "," + data[tmpHead];
tmpHead = (tmpHead + 1) % size;
}
}
result = result + "]";
return result;
}
}