30#define HEAP_PARENT(i) ((i)/2)
31#define HEAP_LEFT(i) (2*(i))
32#define HEAP_RIGHT(i) (2*(i)+1)
40typedef void (*heap_free_elt_fn_t) (
void* elt);
46 heap_free_elt_fn_t free_fn;
51heap_t* heap_alloc(
int size, heap_free_elt_fn_t free_fn);
52void heap_free(heap_t* h);
53void heap_heapify(heap_t* h,
int i);
54void* heap_extract_max(heap_t* h);
55void heap_insert(heap_t* h,
double key,
void* data);
56void heap_dump(heap_t* h);
57int heap_valid(heap_t* h);
58int heap_empty(heap_t* h);
59void heap_reset(heap_t* h);