public class PriorityQueue { Comparable[] data; int size; int maxCapacity; // This priority queue has a maxmimum number of items // which is passed in upon initialization. public PriorityQueue( int maxC ) { size = 0; data = new Comparable[ maxC + 1 ]; maxCapacity = maxC; } public int getSize() { return( size ); } public boolean isEmpty() { return( size == 0 ); } public boolean isFull() { return( size == maxCapacity ); } // throws and exception if the priority queue is already // at its maximum capacity public void add( E c ) throws QueueFullException { if ( size == maxCapacity ) throw new QueueFullException(); data[ ++size ] = c; } // returns the minimum item, without deleting it public E returnMin() { if ( size == 0 ) return null; int minIndex = 1; for ( int i = 2; i <= size; i++ ) if ( data[i].compareTo( data[minIndex] ) < 0 ) minIndex = i; return( (E)data[ minIndex ] ); } //returns and deletes the minimum item public E deleteMin() { if ( size == 0 ) return null; int minIndex = 1; for ( int i = 2; i <= size; i++ ) if ( data[i].compareTo( data[minIndex] ) < 0 ) minIndex = i; E ret = (E)data[ minIndex ]; data[ minIndex ] = data[ size ]; size--; return( ret ); } }