lib: add removal by item to pqueue

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
Quentin Young 2017-04-17 00:06:02 +00:00
parent b43d5ea330
commit 6cbc63316b
2 changed files with 9 additions and 0 deletions

View file

@ -188,3 +188,11 @@ pqueue_remove_at (int index, struct pqueue *queue)
trickle_down (index, queue);
}
}
void
pqueue_remove (void *data, struct pqueue *queue)
{
for (int i = 0; i < queue->size; i++)
if (queue->array[i] == data)
pqueue_remove_at (i, queue);
}

View file

@ -39,6 +39,7 @@ extern void pqueue_delete (struct pqueue *queue);
extern void pqueue_enqueue (void *data, struct pqueue *queue);
extern void *pqueue_dequeue (struct pqueue *queue);
extern void pqueue_remove_at (int index, struct pqueue *queue);
extern void pqueue_remove (void *data, struct pqueue *queue);
extern void trickle_down (int index, struct pqueue *queue);
extern void trickle_up (int index, struct pqueue *queue);