Lines Matching refs:index
46 trickle_up (int index, struct pqueue *queue)
51 tmp = queue->array[index];
55 while (index > 0 &&
56 (*queue->cmp) (tmp, queue->array[PARENT_OF (index)]) < 0)
59 queue->array[index] = queue->array[PARENT_OF (index)];
61 (*queue->update) (queue->array[index], index);
62 index = PARENT_OF (index);
66 queue->array[index] = tmp;
68 (*queue->update) (tmp, index);
72 trickle_down (int index, struct pqueue *queue)
78 tmp = queue->array[index];
81 while (HAVE_CHILD (index, queue))
85 if (RIGHT_OF (index) < queue->size &&
86 (*queue->cmp) (queue->array[LEFT_OF (index)],
87 queue->array[RIGHT_OF (index)]) > 0)
88 which = RIGHT_OF (index);
90 which = LEFT_OF (index);
97 queue->array[index] = queue->array[which];
99 (*queue->update) (queue->array[index], index);
100 index = which;
104 queue->array[index] = tmp;
106 (*queue->update) (tmp, index);
173 pqueue_remove_at (int index, struct pqueue *queue)
175 queue->array[index] = queue->array[--queue->size];
177 if (index > 0
178 && (*queue->cmp) (queue->array[index],
179 queue->array[PARENT_OF(index)]) < 0)
181 trickle_up (index, queue);
185 trickle_down (index, queue);