m865.datastructures
Class QueueCL

java.lang.Object
  extended bym865.datastructures.AbstractQueue
      extended bym865.datastructures.QueueCL
All Implemented Interfaces:
java.lang.Cloneable, java.util.Collection

public class QueueCL
extends AbstractQueue

This class implements a Queue using a circular list embedded in a dynamic array

Version:
2.0 09/16/04
Author:
Daniel D. Warner

Nested Class Summary
 class QueueCL.QueueCLIterator
          The iterator that will walk through the elements of this queue from front to back.
 
Field Summary
protected static int DEFAULT_CAPACITY
          The default capacity of the dynamic array.
protected  int head
          The index that points to the front of the queue.
protected  java.lang.Object[] myArray
          The dynamic array.
protected  int size
          The size of the queue.
 
Fields inherited from class m865.datastructures.AbstractQueue
hash
 
Constructor Summary
  QueueCL()
          Constructs a queue whose dynamic array has the default initial capacity.
  QueueCL(java.util.Collection c)
          Constructs a queue which is initialized with the objects in the specified collection
  QueueCL(int capacity)
          Constructs a queue whose dynamic array has a specified initial size.
protected QueueCL(int hash, int head, int size, java.lang.Object[] circularList)
          Constructs a queue with a specified hash code and a clone of the array containing the circular list.
 
Method Summary
 void clear()
          Removes all the objects from this queue.
 java.lang.Object clone()
          The Cloneable Interface indicates that the clone method, which is inherited from Object, is implemented so that a true clone (a true and independent copy) of the object is returned.
 java.lang.Object dequeue()
          Removes and returns the object at the beginning of the queue.
 void enqueue(java.lang.Object obj)
          Appends an object to the end of the queue.
 java.util.Iterator iterator()
          A factory method which returns an Iterator to the collection in this queue.
static void main(java.lang.String[] args)
          This main method tests the QueueCL class to insure that the elementary functions are correct.
 java.lang.Object peek()
          Returns the object at the beginning of the queue.
 int size()
          Determines the size of this queue.
 java.lang.String toString()
          List the objects in the queue
 
Methods inherited from class m865.datastructures.AbstractQueue
add, addAll, contains, containsAll, downdateHashCode, equals, hashCode, isEmpty, remove, removeAll, retainAll, toArray, toArray, updateHashCode
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

DEFAULT_CAPACITY

protected static final int DEFAULT_CAPACITY
The default capacity of the dynamic array.

See Also:
Constant Field Values

myArray

protected java.lang.Object[] myArray
The dynamic array.


head

protected int head
The index that points to the front of the queue.


size

protected int size
The size of the queue.

Constructor Detail

QueueCL

public QueueCL(int capacity)
Constructs a queue whose dynamic array has a specified initial size. Whenever the dynamic array is increased, it's size will be doubled.

Parameters:
capacity - the initial size of the dynamic array.

QueueCL

public QueueCL()
Constructs a queue whose dynamic array has the default initial capacity.


QueueCL

public QueueCL(java.util.Collection c)
Constructs a queue which is initialized with the objects in the specified collection

Parameters:
c - the collection of objects to be initially enqueued onto this queue.

QueueCL

protected QueueCL(int hash,
                  int head,
                  int size,
                  java.lang.Object[] circularList)
Constructs a queue with a specified hash code and a clone of the array containing the circular list. This constuctor is only for use within the class and its subclasses.

Parameters:
hash - the hash code.
head - the index to the front of the queue.
size - the size of the queue.
circularList - the array that contains the circular list
Method Detail

enqueue

public void enqueue(java.lang.Object obj)
Appends an object to the end of the queue.

Specified by:
enqueue in class AbstractQueue
Parameters:
obj - the object to be appended to the end of the queue.

dequeue

public java.lang.Object dequeue()
Removes and returns the object at the beginning of the queue.

Specified by:
dequeue in class AbstractQueue
Returns:
the object at the beginning of the queue or null if the queue is empty.

peek

public java.lang.Object peek()
Returns the object at the beginning of the queue. The queue remains unchanged.

Specified by:
peek in class AbstractQueue
Returns:
the object at the beginning of the queue or null if the queue is empty.

clear

public void clear()
Removes all the objects from this queue. This is one of the optional operations specified by the Collection Interface


clone

public java.lang.Object clone()
The Cloneable Interface indicates that the clone method, which is inherited from Object, is implemented so that a true clone (a true and independent copy) of the object is returned.

Returns:
a clone (a true and independent copy) of this queue.

iterator

public java.util.Iterator iterator()
A factory method which returns an Iterator to the collection in this queue. This iterator will walk throught the queue from the front to the back, and the iterator will throw a ConcurrentModificationException if the queue is altered during the iteration.

Returns:
a QueueCLIterator which will iterate through this queue from front to back.

size

public int size()
Determines the size of this queue.

Returns:
the number of objects in this queue.

toString

public java.lang.String toString()
List the objects in the queue

Overrides:
toString in class AbstractQueue
Returns:
a formatted string listing the objects in this queue

main

public static void main(java.lang.String[] args)
This main method tests the QueueCL class to insure that the elementary functions are correct.

Parameters:
args - optional command line arguments which will be ignored.