public class Queue
{
   private Object data[] = new Object [50];
   int count;
   int head;
   public Queue ()
   {
      count = 0;
      head = 0;
   }


   public void enqueue (Object value)
   {
      int tail = (head + count) % data.length;
      data [tail] = value;
      count++;
   }


   public Object dequeue ()
   {
      Object temp = data [head];
      count--;
      head = (head + 1) % data.length;
      return temp;
   }


   public Object peek ()
   {
      return data [head];
   }


   public int size ()
   {
      return count;
   }


   public boolean isEmpty ()
   {
      return (count == 0);
   }


   public String toString ()
   {
      //this is NOT an official Queue method
      //it is useful to see what is in your Queue
      int size = count;
      String hold = "";
      for (int i = 0 ; i < size ; i++)
      {
	 Object temp = dequeue ();
	 hold += temp + " ";
	 enqueue (temp);
      }
      return hold;
   }
}
