¿Hay alguna implementación de cola de prioridad confiable y simple (lista de enlaces preferida, no necesaria) para C?Implementación de cola de prioridad en C
Más en general, ¿qué librerías estándar C usas?
¿Hay alguna implementación de cola de prioridad confiable y simple (lista de enlaces preferida, no necesaria) para C?Implementación de cola de prioridad en C
Más en general, ¿qué librerías estándar C usas?
Echa un vistazo PQLib.
Utilizo las bibliotecas estándares C estándar. ;)
Por favor, lea POR FAVOR el archivo LICENSE en PQLib _very_ cuidadosamente. Reintroduce un nuevo tipo de cláusula publicitaria (incluso peor que la cláusula publicitaria BSD original) y es incompatible con la GPL/LGPL (todas las versiones). Básicamente, no puede vincular againtst glibc y PQLib y distribuir legalmente el producto final. La biblioteca es decididamente _no_ de código abierto, y mucho menos de software libre. –
@Tim No me di cuenta ... dice BSD, pero deben significar BSD especial. +1 – WhirlWind
NO USE PQLIB. No está completo y no funciona. – Mark
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 ha sido utilizado en algunos proyectos por lo que es sólido, pero lo escribió en el 98, así que no recuerdo cómo usarlo. No se deje engañar por la extensión cpp. Es directo C.
El código necesita un poco de limpieza pero funciona bien, ¡gracias! – congusbongus
¿Qué proyectos han usado tu código? ¡Gracias por hacer y compartir esto! – Darakian
De nada @Darakian Utilicé esto en algún código de búsqueda de ruta en un videojuego hace mucho tiempo a finales de los 90. – justinhj
El source code que acompaña Robert Sedgewick 's Algorithms in C, Parts 1-4 (Fundamental Algorithms, Data Structures, Sorting, Searching) contiene una implementación basada en el montón y una lista. Consulte el Capítulo 9: Colas de prioridad y Heapsort.
PQLib (la corriente respuesta aceptada) es 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 "HACER" en el código, como "eliminar el nodo que contiene la entrada de mayor prioridad de su pila". La lógica esencial falta.
Para cualquiera que busque una cola de prioridad: Recomiendo encontrar algún código que tenga buenas pruebas de unidad de paso. 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é bastante tiempo depurándolo hasta que me di cuenta de que no era así, lo cual fue frustrante. No recomiende el código que no ha probado o sabe que es un trabajo en progreso.
¡Sí, acabo de perder una hora, debería haber leído un poco más de este hilo! – Mark
¿Por qué quieres decir con "qué bibliotecas estándar?" – WhirlWind
Me gusta implementar mis PQs sobre montones binomiales. –