¿Hay alguna biblioteca C de código abierto con estructuras de datos comunes?

Estoy buscando una biblioteca C con estructuras comunes de datos reutilizables, como listas vinculadas, tablas hash, etc. Algo así como la fuente distribuida con Mastering Algorithms with C (Paperback) de Kyle Loudon .

BSD queue.h tiene:

  • SLIST = lista individualmente vinculada
  • LISTA = lista doblemente vinculada
  • SIMPLEQ = cola enlazada individualmente
  • TAILQ = cola doblemente enlazada

BSD tree.h tiene:

  • RB – árbol rojo-negro
  • SPLAY – árbol splay

Consulte las páginas man de la cola (3) y árbol (3) para más detalles. Realmente me gustan porque son macros puros de C sin dependencias (ni siquiera libc). Además, con la licencia BSD no tiene que preocuparse por ninguna restricción de la empresa con GPL.

Gnome proporciona una excelente biblioteca para esto, llamada Glib , con muchas estructuras de datos útiles y otras utilidades también.

gnulib , la biblioteca de portabilidad gnu.

Se distribuye como código fuente. Esta lista es de su lista de módulos , que incluye una TONELADA de otras cosas. Uno interesante es “c-stack: Stack overflow handling, causando la salida del progtwig”.

  • lista
  • lista de arreglo
  • carray-list
  • lista enlazada
  • avltree-list
  • rbtree-list
  • linkedhash-list
  • avltreehash-list
  • rbtreehash-list
  • sublista (tipo de datos de lista secuencial respaldado por otra lista)
  • oset (conjunto ordenado abstracto)
  • array-oset
  • avltree-oset
  • rbtree-oset

SGLIB es una excelente biblioteca genérica de estructuras de datos. La biblioteca actualmente proporciona implementaciones genéricas para:
ordenar matrices
listas vinculadas
listas clasificadas ordenadas
listas dobles
árboles rojo-negro
contenedores hash

Es muy rápido, más rápido que glib. Está inspirado en la Biblioteca de plantillas estándar. Descarga aquí

Otra solución es el software Attractive Chaos . Biblioteca de macro C:
kbtree.h: biblioteca eficiente de B-tree en C.
khash.h: biblioteca de tablas hash rápidas y livianas en C.
kvec.h: recipiente simple de vectores en C.

El software Sglib y Attractive Chaos son C macros library. Usar void * para implementar contenedores generics en C puede ser ineficiente. Las macros C imitan la plantilla C ++ y son tan eficientes como la plantilla C ++

La Biblioteca GDSL podría ser una buena cosa a considerar:

http://home.gna.org/gdsl/

Apache Portable Runtime.

CLIB

Las herramientas de software de AT & T.