Monday, February 9, 2009
Guest Lecture on Generic Queues by John Paxton
public class Driver
{
public static void main (String [] args)
{
Queue q = new Queue();
q.enqueue(new Name("John", "Paxton"));
q.enqueue(new Name("Jason", "Taylor"));
while (!q.isEmpty())
{
System.out.println(q.peek());
q.dequeue();
}
System.out.println(q.peek());
}
}
public class Name
{
Name (String f, String l)
{
firstName = f;
lastName = l;
}
public String toString()
{
return firstName + " " + lastName;
}
private String firstName;
private String lastName;
}
public class Node<E>
{
Node (E contents)
{
this.contents = contents;
this.next = null;
}
public Node<E> getNext ()
{
return next;
}
public E getContents()
{
return contents;
}
public void setNext (Node<E> n)
{
this.next = n;
}
private E contents;
private Node<E> next;
}
public class Queue<E>
{
Queue()
{
makeEmpty();
}
public void makeEmpty()
{
first = new Node<E>(null);
first.setNext(first);
last = first;
}
public boolean isEmpty()
{
return (first == last);
}
public void enqueue (E contents)
{
Node<E> n = new Node<E>(contents);
last.setNext(n);
n.setNext(first);
last = n;
}
public void printQueue()
{
System.out.println("Queue Contents");
System.out.println("--------------");
System.out.print(this);
System.out.println("---- End -----");
}
public String toString ()
{
String result = "";
Node<E> pointer = first.getNext();
while (pointer != first)
{
result += pointer.getContents() + "\n";
pointer = pointer.getNext();
}
return result;
}
public E peek ()
{
return first.getNext().getContents();
}
public void dequeue ()
{
first.setNext(first.getNext().getNext());
if (first == first.getNext())
{
last = first;
}
}
private Node<E> first;
private Node<E> last;
}