Priority queue-Implementierung in C
Gibt es eine zuverlässige und einfache Warteschlange (verknüpften Liste bevorzugt, nicht nötig) - Implementierung für C?
Generell, was C-standard-Bibliotheken, die Sie benutzen?
- Warum meinst du, "was standard-Bibliotheken"?
- Ich am Liebsten meine PQs auf der Oberseite der binomial-heaps.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Check-out PQLib.
Ich die standard C-standard-Bibliotheken. 😉
PQLib (die aktuelle akzeptierte Antwort) ist unvollständig und die Funktionalität entspricht nicht der Dokumentation, wie dieses posting. E. g., die pq_dequeue Dokumentation sagt, es gibt einen Eintrag. Die Umsetzung wird NULL zurückgegeben. Es gibt viele "TO DO" - Kommentare in den code, wie "entfernen von Knoten mit höchster Priorität Eintrag aus seinem Haufen." Wesentliche Logik fehlt.
Für alle, die sich für eine priority-queue: ich empfehle die Suche nach einigen code, der gut vorbei unit-tests. Ich weiß nicht empfehlen PQLib, es sei denn, es ist aktualisiert und enthält tests.
Dem Besitzer des PQLib oder jemand, es zu empfehlen: ich nahm an, dieser code wurde abgeschlossen und verbrachte ein gutes Stück Zeit zum Debuggen, bis ich merkte, dass er nicht, das war frustrierend. Bitte nicht empfehlen, die code, den Sie nicht versucht haben oder zu wissen, um ein work in progress.
Den source code begleitenden Robert Sedgewick's Algorithms in C, Parts 1-4 (Grundlegende Algorithmen, Datenstrukturen, Sortieren, Suchen) enthält einen heap-basierten und einem list-basierten Umsetzung. Siehe Kapitel 9 - Prioritätswarteschlangen und Heapsort.
Ich einen priority-queue in C geschrieben, gehostet auf google code. MIT-Lizenz
https://code.google.com/p/pqueue-heap-c/source/browse/trunk/pqueue.cpp
Den code verwendet worden ist, in ein paar Projekte, so dass es fest ist, aber ich schrieb es in '98, so dass ich mich nicht erinnern, wie es zu benutzen. Nicht irregeführt werden durch die cpp-Erweiterung. Es ist gerade C.