web-dev-qa-db-fra.com

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

Je recherche une bibliothèque C avec des structures de données réutilisables communes comme des listes liées, des tables de hachage, etc. Quelque chose comme la source distribuée avec Mastering Algorithms with C (Paperback) by Kyle Loudon .

104
Vasil

BSD queue.h a:

  • SLIST = liste liée individuellement
  • LISTE = liste doublement chaîné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

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

54
HUAGHAGUAH

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

37
Emil H

gnulib , la bibliothèque de portabilité gnu.

Il est distribué en tant que 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 des dépassements de pile, provoquant la sortie du programme".

  • liste
  • tableau-liste
  • carray-list
  • liste liée
  • avltree-list
  • rbtree-list
  • linkedhash-list
  • avltreehash-list
  • rbtreehash-list
  • sous-liste (type de données de liste séquentielle soutenu par une autre liste.)
  • oset (Ensemble ordonné abstrait.)
  • array-oset
  • avltree-oset
  • rbtree-oset
29
Ian Kelling

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:
tableaux de tri
listes liées
listes de liens triées
double listes chaînées
arbres rouge-noir
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 logiciel Attractive Chaos . Bibliothèque de macros C:
kbtree.h: bibliothèque d'arborescence B efficace en C.
khash.h: bibliothèque de tables de hachage rapide et légère en C.
kvec.h: simple conteneur vectoriel en C.

Les logiciels Sglib et Attractive Chaos sont une bibliothèque 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++

19
Lear

La bibliothèque GDSL peut être une bonne chose à considérer:

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

5
luis.espinal

Le runtime portable Apache.

3
Jaap
0
Avinash