structure
Class SkewHeap<ELTTYPE extends java.lang.Comparable<ELTTYPE>>

java.lang.Object
  extended by structure.SkewHeap<ELTTYPE>
All Implemented Interfaces:
MergeableHeap<ELTTYPE>, PriorityQueue<ELTTYPE>

public class SkewHeap<ELTTYPE extends java.lang.Comparable<ELTTYPE>>
extends java.lang.Object
implements MergeableHeap<ELTTYPE>

An implementation of a priority queue using skew heaps. Skew heaps allow one to construct heaps dynamically without explictly balancing the heaps. Main operation is a merge. Most operations execute in amortized logarithmic time, but individual operations may take linear time to execute in the worst case.

Example usage:

To print out a list of programmers sorted by age we could use the following:

 public static void main(String[] argv){
        //initialize a new fib heap
        SkewHeap programmers = new SkewHeap();

        //add programmers and their ages to heap
        //ages current of 7/22/2002
        //add programmers and their ages to heap
        //ages current of 7/22/2002
        programmers.add(new ComparableAssociation(new Integer(22), "Evan"));
        programmers.add(new ComparableAssociation(new Integer(19), "Chris"));
        programmers.add(new ComparableAssociation(new Integer(20), "Shimon"));
        programmers.add(new ComparableAssociation(new Integer(21), "Diane"));
        programmers.add(new ComparableAssociation(new Integer(21), "Lida"));    
        programmers.add(new ComparableAssociation(new Integer(20), "Rob"));     
        programmers.add(new ComparableAssociation(new Integer(20), "Sean"));    

        //print out programmers 
        while(!programmers.isEmpty()){
            ComparableAssociation p = (ComparableAssociation)programmers.remove();
            System.out.println(p.getValue() + " is " + p.getKey() + " years old.");
        }
 }
 


Constructor Summary
SkewHeap()
          Constructs an empty priority queue.
 
Method Summary
 void add(ELTTYPE value)
          Add a value to the priority queue.
 void clear()
          Remove all the elements from the queue.
 ELTTYPE getFirst()
          Fetch lowest valued (highest priority) item from queue.
 boolean isEmpty()
          Determine if the queue is empty.
static void main(java.lang.String[] argv)
           
 void merge(MergeableHeap<ELTTYPE> otherHeap)
          Merge this heap with another
 ELTTYPE remove()
          Returns the minimum value from the queue.
 int size()
          Determine the size of the queue.
 java.lang.String toString()
          Construct a string representation of the heap.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SkewHeap

public SkewHeap()
Constructs an empty priority queue.

Post:
creates an empty priority queue
Method Detail

getFirst

public ELTTYPE getFirst()
Fetch lowest valued (highest priority) item from queue.

Specified by:
getFirst in interface PriorityQueue<ELTTYPE extends java.lang.Comparable<ELTTYPE>>
Returns:
The smallest value from queue.
Pre:
!isEmpty()
Post:
returns the minimum value in priority queue

remove

public ELTTYPE remove()
Returns the minimum value from the queue.

Specified by:
remove in interface PriorityQueue<ELTTYPE extends java.lang.Comparable<ELTTYPE>>
Returns:
The minimum value in the queue.
Pre:
!isEmpty()
Post:
returns and removes minimum value from queue

add

public void add(ELTTYPE value)
Add a value to the priority queue.

Specified by:
add in interface PriorityQueue<ELTTYPE extends java.lang.Comparable<ELTTYPE>>
Parameters:
value - The value to be added.
Pre:
value is non-null comparable
Post:
value is added to priority queue

size

public int size()
Determine the size of the queue.

Specified by:
size in interface PriorityQueue<ELTTYPE extends java.lang.Comparable<ELTTYPE>>
Returns:
The number of elements within the queue.
Post:
returns number of elements within queue

clear

public void clear()
Remove all the elements from the queue.

Specified by:
clear in interface PriorityQueue<ELTTYPE extends java.lang.Comparable<ELTTYPE>>
Post:
removes all elements from queue

isEmpty

public boolean isEmpty()
Determine if the queue is empty.

Specified by:
isEmpty in interface PriorityQueue<ELTTYPE extends java.lang.Comparable<ELTTYPE>>
Returns:
True if the queue is empty.
Post:
returns true iff no elements are in queue

merge

public void merge(MergeableHeap<ELTTYPE> otherHeap)
Merge this heap with another

Specified by:
merge in interface MergeableHeap<ELTTYPE extends java.lang.Comparable<ELTTYPE>>
Parameters:
otherHeap - Heap to be merged with this heap, otherHeap is destroyed by this operation;
Post:
the two heaps are merged and otherHeap is destroyed

toString

public java.lang.String toString()
Construct a string representation of the heap.

Overrides:
toString in class java.lang.Object
Returns:
The string representing the heap.
Post:
returns string representation of heap

main

public static void main(java.lang.String[] argv)