Bibliotecas de hash para programadores en C

Esta página enumera una colección de bibliotecas que lo ayudarán a programar en C. Las bibliotecas aquí son de código abierto y se utilizan para ayudarlo a almacenar datos, sin tener que rodar su propia lista vinculada, etc..

uthash

Desarrollado por Troy D. Hanson, cualquier estructura C se puede almacenar en una tabla hash usando uthash. Simplemente incluya #include "uthash.h", luego agregue un UT_hash_handle a la estructura y elija uno o más campos en su estructura para que actúen como la clave. Luego use HASH_ADD_INT, HASH_FIND_INT y macros para almacenar, recuperar o eliminar elementos de la tabla hash. Utiliza claves int, string y binarias..

Judy

Judy es una biblioteca en C que implementa una matriz dinámica dispersa. Las matrices Judy se declaran simplemente con un puntero nulo y consumen memoria solo cuando se rellenan. Pueden crecer para usar toda la memoria disponible si lo desean. Los beneficios clave de Judy son la escalabilidad, el alto rendimiento y la eficiencia de la memoria. Se puede usar para matrices de tamaño dinámico, matrices asociativas o una interfaz fácil de usar que no requiere retrabajo para expansión o contracción y puede reemplazar muchas estructuras de datos comunes, como matrices, matrices dispersas, tablas hash, árboles B, binarios árboles, listas lineales, listas de salto, otros algoritmos de clasificación y búsqueda, y funciones de conteo.

SGLIB

SGLIB es la abreviatura de Simple Generic Library y consta de un solo archivo de encabezado sglib.h que proporciona la implementación genérica de los algoritmos más comunes para matrices, listas, listas ordenadas y árboles rojo-negros. La biblioteca es genérica y no define sus propias estructuras de datos. En cambio, actúa sobre las estructuras de datos definidas por el usuario existentes a través de una interfaz genérica. Tampoco asigna ni desasigna ninguna memoria y no depende de ninguna administración de memoria en particular..

Todos los algoritmos se implementan en forma de macros parametrizados por el tipo de estructura de datos y la función de comparación (o macro de comparación). Es posible que se requieran varios parámetros genéricos adicionales, como el nombre del campo 'siguiente' para las listas vinculadas para algunos algoritmos y estructuras de datos.