¿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 .


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.


36

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


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

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 ++


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




Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.