aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKirill Petrashin <kirill8201@yandex.ru>2026-03-29 16:05:22 +0300
committerKirill Petrashin <kirill8201@yandex.ru>2026-03-29 16:05:22 +0300
commit3f4d45ae2ad3258a4c13fe7bacc9f52d6ad68ee1 (patch)
tree35f09f4ed3b7f305ea430cd00c2083fc77a1269e
parent6b5b7c9060f4e317ed5463772369e727fcfeeb05 (diff)
downloadastar-3f4d45ae2ad3258a4c13fe7bacc9f52d6ad68ee1.tar.xz
Make ppq_insert() handle when pos is in ppq but new one has better priority
-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;