Skip to content

Commit

Permalink
Merge pull request #374 from qlyoung/pqueue-linear-remove
Browse files Browse the repository at this point in the history
lib: add removal by item to pqueue
  • Loading branch information
riw777 authored Apr 19, 2017
2 parents de72643 + 6cbc633 commit ae73184
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 0 deletions.
8 changes: 8 additions & 0 deletions lib/pqueue.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
1 change: 1 addition & 0 deletions lib/pqueue.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit ae73184

Please sign in to comment.