heap.h
Go to the documentation of this file.
1 #ifndef HEAPH
2 #define HEAPH
3 
4 #include "vector.h"
5 
43 boolean LessThanID(void *a,void *b,void *userData);
44 
45 
60 boolean LessThanDouble(void *a,void *b,void *userData);
61 
78 boolean LessThanDoublePair(void *a,void *b,void *userData);
79 
94 boolean LessThanPtr(void *a,void *b,void *userData);
95 
96 
105 typedef struct
106 {
108  boolean hasIDs;
113  unsigned int last;
114  boolean (* LessThan)(void*,void*,void*);
116  void *userData;
121 } Theap;
122 
146 void InitHeap(unsigned int ele_size,
147  void (* Copy)(void *,void*),
148  void (* Delete)(void *),
149  boolean (* LessThan)(void *,void *,void *),
150  void *userData,
151  boolean hasIDs,
152  unsigned int max_ele,Theap *heap);
153 
163 void CopyHeap(Theap *h_dst,Theap *h_src);
164 
172 void ResetHeap(Theap *heap);
173 
183 unsigned int HeapSize(Theap *heap);
184 
194 boolean HeapEmpty(Theap *heap);
195 
205 void AddElement2Heap(unsigned int id,void *e,Theap *heap);
206 
225 void UpdateHeapElement(unsigned int id,void *e,Theap *heap);
226 
238 void *GetHeapElement(unsigned int i,Theap *heap);
239 
250 void *GetHeapElementWithID(unsigned int id,Theap *heap);
251 
263 unsigned int GetHeapPosition(unsigned int id,Theap *heap);
264 
279 unsigned int ExtractMinElement(void *e,Theap *heap);
280 
288 void DeleteHeap(Theap *heap);
289 
290 #endif
void CopyHeap(Theap *h_dst, Theap *h_src)
Copy constructor.
Definition: heap.c:259
boolean LessThanDouble(void *a, void *b, void *userData)
Comparison operator for doubles.
Definition: heap.c:219
void AddElement2Heap(unsigned int id, void *e, Theap *heap)
Adds an element to the heap.
Definition: heap.c:294
boolean HeapEmpty(Theap *heap)
Checks if a heap is empty.
Definition: heap.c:289
unsigned int ExtractMinElement(void *e, Theap *heap)
Extracts and removes the minimal element of a heap.
Definition: heap.c:356
boolean LessThanDoublePair(void *a, void *b, void *userData)
Comparison operator for paris of doubles.
Definition: heap.c:224
void UpdateHeapElement(unsigned int id, void *e, Theap *heap)
Updates the position of an element in the heap.
Definition: heap.c:308
void * GetHeapElementWithID(unsigned int id, Theap *heap)
Returns a pointer to a heap element given the element identifier.
Definition: heap.c:340
void InitHeap(unsigned int ele_size, void(*Copy)(void *, void *), void(*Delete)(void *), boolean(*LessThan)(void *, void *, void *), void *userData, boolean hasIDs, unsigned int max_ele, Theap *heap)
Constructor.
Definition: heap.c:237
boolean LessThanID(void *a, void *b, void *userData)
Comparison operator for identifiers.
Definition: heap.c:214
void ResetHeap(Theap *heap)
Resets a heap.
Definition: heap.c:273
Tvector data2id
Definition: heap.h:111
A generic vector.
Definition: vector.h:227
Tvector data
Definition: heap.h:107
boolean hasIDs
Definition: heap.h:108
unsigned int last
Definition: heap.h:113
Definition of the Tvector type and the associated functions.
Tvector id2data
Definition: heap.h:109
boolean LessThanPtr(void *a, void *b, void *userData)
Comparison operator for pointers.
Definition: heap.c:231
A generic binary heap.
Definition: heap.h:105
unsigned int boolean
Boolean type.
Definition: boolean.h:13
void * userData
Definition: heap.h:116
void * GetHeapElement(unsigned int i, Theap *heap)
Returns a pointer to a heap element.
Definition: heap.c:331
unsigned int HeapSize(Theap *heap)
Gets the number of elements in a heap.
Definition: heap.c:284
unsigned int GetHeapPosition(unsigned int id, Theap *heap)
Returns the current position in the heap of an element given its identifier.
Definition: heap.c:348
void DeleteHeap(Theap *heap)
Destructor.
Definition: heap.c:388