public class ListQueue implements Queue
{
protected Link head;
protected Link tail;
ListQueue()
{
head = null;
tail = null;
}
public void enqueue(Object elem)
{
if (head == null) {
head = new Link(elem);
tail = head;
}
else
{
tail.setNext(new Link(elem));
tail = tail.next();
}
}
public Object dequeue() {
Object dequeued_elem;
if (head == null)
return null;
dequeued_elem = head.element();
head = head.next;
if (head == null)
tail = null;
return dequeued_elem;
}
public boolean empty() {
return (head == null);
}
public String toString()
{
String result = "[";
Link tmp = head;
if (tmp != null)
{
result = result + tmp.element();
tmp = tmp.next();
while (tmp != null)
{
result = result + "," + tmp.element();
tmp = tmp.next();
}
}
result = result + "]";
return result;
}
public class Link {
private Object element;
private Link next;
public Link(Object newelement)
{
element = newelement;
next = null;
}
public Link(Object newelement, Link newnext)
{
element = newelement;
next = newnext;
}
public Link next()
{
return next;
}
public Object element()
{
return element;
}
public void setNext(Link newnext)
{
next = newnext;
}
public void setElement(Object newelement)
{
element = newelement;
}
}
}