¿Existen bibliotecas C de código abierto con estructuras de datos comunes? [cerrado]

111

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

Vasil
fuente
Otros sitios se adaptan mejor a este tipo de preguntas slant.co/improve/topics/19233
ideasman42

Respuestas:

57

BSD queue.h tiene:

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

BSD tree.h tiene:

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

Consulte las páginas de comando man queue (3) y tree (3) para obtener más detalles. Realmente me gustan porque son macros C puras sin dependencias (ni siquiera libc). Además, con la licencia BSD, no tiene que preocuparse por las restricciones de la empresa con GPL.

HUAGHAGUAH
fuente
36

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

Emil H
fuente
30

gnulib , la biblioteca de portabilidad de GNU .

Se distribuye como código fuente. Esta lista es de su lista de módulos , que incluye TONELADAS de otras cosas. Uno interesante es "c-stack: manejo de desbordamiento de pila, lo que provoca la salida del programa".

  • lista
  • lista de arreglo
  • lista-carray
  • lista enlazada
  • avltree-list
  • rbtree-list
  • lista hash vinculada
  • 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
Ian Kelling
fuente
Tenga en cuenta que esta opción tiene licencia GPL y, por lo tanto, solo se puede utilizar legalmente en software con licencia GPL.
Noah Andrews
19

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

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

Otra solución es el software Atractivo Caos . Biblioteca de macros de C:
kbtree.h: biblioteca de árbol B eficiente en C.
khash.h: biblioteca de tabla hash rápida y ponderada en C.
kvec.h: contenedor de vector simple en C.

El software Sglib y Handsome Chaos son bibliotecas de macros C. Usar void * para implementar contenedores genéricos en C puede ser ineficiente. Las macros de C imitan la plantilla de C ++ y son tan eficientes como la plantilla de C ++

Lear
fuente
Buenos consejos: nunca había oído hablar de SGLIB antes.
Michael Burr
El enlace de "descarga" del proyecto SGLIB está roto. Parece que va a desaparecer ...: /
luis.espinal
@ luis.espinal Todavía se puede descargar de freecode.com/projects/sglib
Rob
Parece que estas dos bibliotecas se han ido sin permiso.
Michael Foukarakis
3

El tiempo de ejecución portátil de Apache.

Jaap
fuente
3
Encontrado aquí: apr.apache.org
n8gray