aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--priority_queue.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/priority_queue.c b/priority_queue.c
index 6460a9e..d899103 100644
--- a/priority_queue.c
+++ b/priority_queue.c
@@ -28,6 +28,8 @@ int ppq_insert(PositionPQ **ppq, Position pos, size_t priority) {
if (start->priority > priority) {
n->next = start;
start = n;
+ *ppq = start;
+ ppq_remove(&(n->next), pos);
return PPQ_INSERT_SUCCESS;
}
@@ -48,6 +50,8 @@ int ppq_insert(PositionPQ **ppq, Position pos, size_t priority) {
n->next = temp->next;
temp->next = n;
+ ppq_remove(&(n->next), pos);
+
return PPQ_INSERT_SUCCESS;
}
@@ -71,7 +75,7 @@ void ppq_remove(PositionPQ **ppq, Position pos) {
PositionPQ *temp = *ppq;
if (temp == NULL) {
- error("Tried to remove a pos from a NULL PositionPQ\n");
+ return;
}
PositionPQ *prev = NULL;