Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

Heap.h

Go to the documentation of this file.
00001 /*
00002     File:       Heap.h
00003 
00004     Function:   Implements a simple binary heap. From Manber's
00005                 "Introduction to Algorithms."
00006 
00007     Author:     Andrew Willmott
00008 
00009     Copyright:  (c) 2000, Andrew Willmott
00010 */
00011 
00012 #ifndef __Heap__
00013 #define __Heap__
00014 
00015 #include "cl/PtrArray.h"
00016 
00017 struct HeapEntry
00018 {
00019     Float   cost;   
00020     Int     heapIdx;
00021 };
00022 
00023 typedef PtrArray<HeapEntry> HeapEntries;
00024 
00025 class Heap
00026 {
00027 public:
00028 
00029 // operations needed for a priority queue
00030 
00031     Void        Insert(HeapEntry *he);
00032     // add he to the heap.
00033     Void        Delete(HeapEntry *he);
00034     // remove he from the heap.
00035     Void        Update(HeapEntry *he);
00036     // signal that he's cost has been updated
00037     HeapEntry   *RemoveMax();
00038     // remove highest cost node.
00039 
00040     Int         NumItems()
00041                 { return(heap.NumItems()); };
00042 
00043     Void        HeapifyUp(Int i);
00044     Void        HeapifyDown(Int i);
00045 
00046     Int         Parent(Int i)
00047                 { return((i - 1) / 2); }
00048     Int         Left(Int i)
00049                 { return(2 * i + 1); }
00050     Int         Right(Int i)
00051                 { return(2 * i + 2); }
00052 
00053     HeapEntries heap;
00054 };
00055 
00056 #endif

Generated at Sat Aug 5 00:16:32 2000 for Class Library by doxygen 1.1.0 written by Dimitri van Heesch, © 1997-2000