diff options
| author | Kirill Petrashin <kirill8201@yandex.ru> | 2026-03-29 16:05:22 +0300 |
|---|---|---|
| committer | Kirill Petrashin <kirill8201@yandex.ru> | 2026-03-29 16:05:22 +0300 |
| commit | 3f4d45ae2ad3258a4c13fe7bacc9f52d6ad68ee1 (patch) | |
| tree | 35f09f4ed3b7f305ea430cd00c2083fc77a1269e | |
| parent | 6b5b7c9060f4e317ed5463772369e727fcfeeb05 (diff) | |
| download | astar-3f4d45ae2ad3258a4c13fe7bacc9f52d6ad68ee1.tar.xz | |
Make ppq_insert() handle when pos is in ppq but new one has better priority
| -rw-r--r-- | priority_queue.c | 6 |
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; |
