#define MIN_LENGTH 16
+#define ROOT_IDX 1
+
struct binheap {
unsigned magic;
#define BINHEAP_MAGIC 0xf581581aU /* from /dev/random */
bh->priv = priv;
bh->cmp = cmp_f;
bh->update = update_f;
- bh->next = 0;
+ bh->next = ROOT_IDX;
bh->length = MIN_LENGTH;
bh->array = calloc(sizeof *bh->array, bh->length);
assert(bh->array != NULL);
unsigned v;
assert(bh->magic == BINHEAP_MAGIC);
- while (u > 0) {
+ while (u > ROOT_IDX) {
v = PARENT(u);
if (bh->cmp(bh->priv, bh->array[u], bh->array[v])) {
binhead_swap(bh, u, v);
assert(bh != NULL);
assert(bh->magic == BINHEAP_MAGIC);
- if(bh->next == 0)
+ if(bh->next == ROOT_IDX)
return (NULL);
- return (bh->array[0]);
+ return (bh->array[ROOT_IDX]);
}
void
assert(bh != NULL);
assert(bh->magic == BINHEAP_MAGIC);
- assert(bh->next > 0);
+ assert(bh->next > ROOT_IDX);
assert(idx < bh->next);
if (idx == --bh->next)
return;