108 votes

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

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

54voto

HUAGHAGUAH Points 1369

BSD queue.h a :

  • SLIST = liste singulièrement liée
  • LIST = liste doublement liée
  • SIMPLEQ = singly linked queue
  • TAILQ = file d'attente doublement liée

BSD tree.h a :

  • RB - arbre rouge-noir
  • SPLAY - arbre d'épandage

Voir le file d'attente(3) y arbre(3) pour plus de détails. Je les aime vraiment parce que 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 la GPL.

36voto

Emil H Points 24062

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

29voto

Ian Kelling Points 1835

gnulib la bibliothèque de portabilité gnu.

Il est distribué sous forme de code source. Cette liste est tirée de son liste des modules qui comprend une tonne d'autres choses. L'une d'entre elles est intéressante : "c-stack : Gestion du débordement de pile, provoquant la sortie du programme".

  • liste
  • liste de tableaux
  • carray-list
  • liste liée
  • avltree-list
  • rbtree-list
  • liste de cendres liées
  • avltreehash-list
  • rbtreehash-list
  • sublist ( Type de données de liste séquentielle soutenue par une autre liste. )
  • oset (Ensemble ordonné abstrait.)
  • array-oset
  • avltree-oset
  • rbtree-oset

19voto

Lear Points 583

SGLIB est une excellente bibliothèque de structures de données génériques. La bibliothèque fournit actuellement une implémentation générique pour :
trier les tableaux
listes liées
listes chaînées triées
listes doublement liées
arbres rouges-noirs
conteneurs hachés

Il est très rapide, plus rapide que glib. Elle est inspirée de la Standard Template Library. Télécharger ici

Une autre solution est Logiciel Chaos attrayant . C :
kbtree.h : bibliothèque B-tree efficace en C.
khash.h : bibliothèque de table de hachage rapide et légère en C.
kvec.h : conteneur vectoriel simple en C.

Sglib et Attractive Chaos sotware 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 les modèles C++ et sont aussi efficaces que ces derniers.

5voto

luis.espinal Points 4145

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X