Gibt es Open Source C-Bibliotheken mit gemeinsamen Datenstrukturen? [geschlossen]

111

Ich suche eine C-Bibliothek mit gängigen wiederverwendbaren Datenstrukturen wie verknüpften Listen, Hash-Tabellen usw. So etwas wie die Quelle, die Kyle Loudon mit Mastering-Algorithmen mit C (Taschenbuch) verteilt hat .

Vasil
quelle
Andere Websites sind besser für diese Art von Fragen geeignet slant.co/improve/topics/19233
ideasman42

Antworten:

57

BSD queue.h hat:

  • SLIST = einfach verknüpfte Liste
  • LIST = doppelt verknüpfte Liste
  • SIMPLEQ = einfach verknüpfte Warteschlange
  • TAILQ = doppelt verknüpfte Warteschlange

BSD tree.h hat:

  • RB - rot-schwarzer Baum
  • SPLAY - Spreizbaum

Weitere Informationen finden Sie in den Manpages zu Warteschlange (3) und Baum (3) . Ich mag sie wirklich, weil sie reine C-Makros ohne Abhängigkeiten sind (nicht einmal libc). Mit der BSD-Lizenz müssen Sie sich außerdem keine Gedanken über Unternehmensbeschränkungen mit GPL machen.

HUAGHAGUAH
quelle
36

Gnome bietet hierfür eine hervorragende Bibliothek namens Glib mit vielen nützlichen Datenstrukturen und anderen Dienstprogrammen.

Emil H.
quelle
30

gnulib , die Gnu-Portabilitätsbibliothek.

Es wird als Quellcode verteilt. Diese Liste stammt aus der Modulliste , die eine TONNE anderer Dinge enthält. Ein interessantes ist "c-stack: Stapelüberlaufbehandlung, die zum Beenden des Programms führt."

  • aufführen
  • Anordnungsliste
  • Carray-Liste
  • verknüpfte Liste
  • avltree-Liste
  • rbtree-Liste
  • Linkedhash-Liste
  • avltreehash-Liste
  • rbtreehash-Liste
  • Unterliste (Datentyp der sequentiellen Liste, der von einer anderen Liste unterstützt wird.)
  • oset (Abstract geordneter Satz.)
  • Array-Oset
  • avltree-oset
  • rbtree-oset
Ian Kelling
quelle
Beachten Sie, dass diese Option GPL-lizenziert ist und daher nur in GPL-lizenzierter Software legal verwendet werden kann.
Noah Andrews
19

SGLIB ist eine ausgezeichnete generische Datenstrukturbibliothek. Die Bibliothek bietet derzeit generische Implementierungen für:
Sortieren von Arrays
Verknüpfte Listen
Sortierte verknüpfte Listen
Doppelte verknüpfte Listen
Rot-Schwarz-Bäume-
Hash-Container

Es ist sehr schnell, schneller als glib. Es ist von der Standardvorlagenbibliothek inspiriert. Hier herunterladen

Eine andere Lösung ist die Attraktive Chaos-Software . C-
Makrobibliothek : kbtree.h: Effiziente B-Baum-Bibliothek in C.
khash.h: Schnelle und leichte Hash-Tabellenbibliothek in C.
kvec.h: Einfacher Vektorcontainer in C.

Sglib und Attractive Chaos Software sind C-Makrobibliothek. Die Verwendung von void * zum Implementieren generischer Container in C kann ineffizient sein. C-Makros ahmen die C ++ - Vorlage nach und sind genauso effizient wie die C ++ - Vorlage

Lear
quelle
Nette Hinweise - ich hatte noch nie von SGLIB gehört.
Michael Burr
Der "Download" -Link für das SGLIB-Projekt ist defekt. Scheint nicht mehr zu
funktionieren
@ luis.espinal Es kann immer noch von freecode.com/projects/sglib
Rob
Scheint, dass diese beiden Bibliotheken AWOL geworden sind.
Michael Foukarakis
3

Die tragbare Apache-Laufzeit.

Jaap
quelle
3
Gefunden hier: apr.apache.org
n8gray