Existe-t-il des bibliothèques C open source avec des structures de données communes? [fermé]

111

Je recherche une bibliothèque C avec des structures de données réutilisables courantes comme des listes chaînées, des tables de hachage, etc. Quelque chose comme la source distribuée avec Mastering Algorithms with C (Broché) par Kyle Loudon .

Vasil
la source
D'autres sites sont mieux adaptés à ce genre de questions slant.co/improve/topics/19233
ideasman42

Réponses:

57

BSD queue.h a:

  • SLIST = liste liée individuellement
  • LISTE = liste doublement liée
  • SIMPLEQ = file d'attente liée individuellement
  • TAILQ = file d'attente doublement liée

BSD tree.h a:

  • RB - arbre rouge-noir
  • SPLAY - arbre splay

Voir les pages de manuel queue (3) et tree (3) pour plus de détails. Je les aime beaucoup car ce sont de pures macros C sans dépendances (pas même la libc). De plus, avec la licence BSD, vous n'avez pas à vous soucier des restrictions de l'entreprise avec la GPL.

HUAGHAGUAH
la source
36

Gnome fournit une excellente bibliothèque pour cela, appelée Glib , avec de nombreuses structures de données utiles et d'autres utilitaires.

Emil H
la source
30

gnulib , la bibliothèque de portabilité gnu.

Il est distribué sous forme de code source. Cette liste provient de sa liste de modules , qui comprend une tonne d'autres choses. Un exemple intéressant est "c-stack: gestion du débordement de pile, provoquant la sortie du programme".

  • liste
  • liste des tableaux
  • liste de carray
  • liste liée
  • avltree-list
  • rbtree-list
  • liste-hach liée
  • avltreehash-list
  • rbtreehash-list
  • sublist (type de données de liste séquentielle soutenu par une autre liste.)
  • oset (ensemble ordonné abstrait.)
  • array-oset
  • avltree-oset
  • rbtree-oset
Ian Kelling
la source
Gardez à l'esprit que cette option est sous licence GPL et ne peut donc être utilisée légalement que dans les logiciels sous licence GPL.
Noah Andrews
19

SGLIB est une excellente bibliothèque générique de structures de données. La bibliothèque fournit actuellement des implémentations génériques pour: le
tri des tableaux les
listes liées les listes
triées les listes
liées les doubles listes liées
les arbres rouge-noir
les conteneurs hachés

C'est très rapide, plus rapide que glib. Il est inspiré de la bibliothèque de modèles standard. Télécharger ici

Une autre solution est le logiciel Attractive Chaos . Bibliothèque de macros C:
kbtree.h: bibliothèque B-tree efficace dans C.
khash.h: bibliothèque de table de hachage rapide et légère dans C.
kvec.h: conteneur vectoriel simple dans C.

Les logiciels Sglib et Attractive Chaos sont des bibliothèques de macros C. L'utilisation de void * pour implémenter des conteneurs génériques en C peut être inefficace. Les macros C imitent le modèle C ++ et sont aussi efficaces que le modèle C ++

Lear
la source
Bons conseils - je n'avais jamais entendu parler de SGLIB auparavant.
Michael Burr
Le lien "télécharger" pour le projet SGLIB est rompu. On dirait disparaître ...: /
luis.espinal
@ luis.espinal Il peut encore être téléchargé sur freecode.com/projects/sglib
Rob
Il semble que ces deux bibliothèques aient disparu.
Michael Foukarakis
3

Le runtime portable Apache.

Jaap
la source
3
Trouvé ici: apr.apache.org
n8gray