Implementación de la cola de prioridad en C

¿Hay alguna cola de prioridad confiable y simple (lista enlazada preferida, no necesaria) implementada para C?

Más generalmente, ¿qué bibliotecas estándar de C usas?

Echa un vistazo a PQLib .

Yo uso las bibliotecas estándar de C estándar. 😉

PQLib (la respuesta aceptada actual) está incompleta y la funcionalidad no coincide con la documentación a partir de esta publicación. Por ejemplo, la documentación pq_dequeue dice que devuelve una entrada. La implementación devuelve NULL. Hay muchos comentarios “PARA HACER” en el código, como “eliminar el nodo que contiene la entrada de mayor prioridad de su montón”. Falta la lógica esencial.

Para cualquier persona que busque una cola de prioridad: recomiendo encontrar algún código que tenga buenas pruebas de aprobación de unidades. No recomiendo PQLib a menos que esté actualizado e incluya pruebas.

Para el propietario de PQLib o cualquiera que lo recomiende: asumí que este código estaba completo y pasé un poco de tiempo de depuración hasta que me di cuenta de que no lo era, lo que fue frustrante. No recomiende el código que no ha probado o sabe que es un trabajo en progreso.

El código fuente que acompaña a los algoritmos de Robert Sedgewick en C, partes 1-4 (Algoritmos fundamentales, estructuras de datos, clasificación, búsqueda) contiene una implementación basada en el montón y una basada en la lista. Consulte el Capítulo 9 – Colas de prioridad y Heapsort.

Tengo una cola de prioridad escrita en C, alojada en el código de Google. Licencia MIT

https://code.google.com/p/pqueue-heap-c/source/browse/trunk/pqueue.cpp

El código se ha utilizado en algunos proyectos, por lo que es sólido, pero lo escribí en 1998, por lo que no recuerdo cómo usarlo. No te dejes engañar por la extensión cpp. Es recto C.