00001
00002
00003
00004
00005
00006
00007
00008 #ifndef INDEXHEAP_H_
00009 #define INDEXHEAP_H_
00010
00011 #include <queue>
00012 #include <vector>
00013
00017 class IndexHeap {
00018 public:
00019 IndexHeap();
00020
00024 IndexHeap(int cap);
00025 virtual ~IndexHeap();
00026
00030 void insert(double key, int value);
00031
00035 double minKey();
00036
00040 int minVal();
00041
00045 void deleteMin();
00046
00050 double * getDoubleArray();
00051
00055 int * getIntArray();
00056
00057 private:
00058
00059 void percUp(int i );
00060 void percDown(int i);
00061
00062 int leftChild(int i);
00063 int rightChild(int i);
00064 int parent(int i);
00065 void swap(int i, int j);
00066
00067 double * keys;
00068 int * vals;
00069 int size;
00070 int capacity;
00071
00072 };
00073
00074 #endif