Czy istnieją biblioteki C typu open source ze wspólnymi strukturami danych? [Zamknięte]

111

Szukam biblioteki C ze wspólnymi strukturami danych wielokrotnego użytku, takimi jak połączone listy, tabele skrótów itp. Coś w rodzaju źródła dystrybuowanego z algorytmami Mastering z C (Paperback) autorstwa Kyle Loudon .

Wasyl
źródło
Inne witryny są lepiej dostosowane do tego rodzaju pytań slant.co/improve/topics/19233
ideasman42

Odpowiedzi:

57

BSD queue.h ma:

  • SLIST = lista pojedynczo połączona
  • LIST = lista podwójnie połączona
  • SIMPLEQ = pojedynczo połączona kolejka
  • TAILQ = podwójnie połączona kolejka

BSD tree.h posiada:

  • RB - czerwono-czarne drzewo
  • SPLAY - splay tree

Szczegółowe informacje można znaleźć na stronach podręcznika queue (3) i tree (3) . Bardzo je lubię, ponieważ są to czyste makra C bez zależności (nawet nie libc). Dodatkowo dzięki licencji BSD nie musisz się martwić o żadne ograniczenia firmy w / GPL.

HUAGHAGUAH
źródło
36

Gnome zapewnia do tego doskonałą bibliotekę, zwaną Glib , z wieloma użytecznymi strukturami danych i innymi narzędziami.

Emil H.
źródło
30

gnulib , biblioteka przenośności GNU .

Jest rozpowszechniany jako kod źródłowy. Ta lista pochodzi z listy modułów , która zawiera TONĘ innych rzeczy. Jednym z interesujących jest „c-stack: obsługa przepełnienia stosu, powodująca zamknięcie programu”.

  • lista
  • lista-tablic
  • lista-lista
  • połączona lista
  • avltree-list
  • rbtree-list
  • linkedhash-list
  • avltreehash-list
  • rbtreehash-list
  • sublist (typ danych listy sekwencyjnej wspierany przez inną listę).
  • oset (abstrakcyjny zestaw uporządkowany.)
  • tablica-oset
  • avltree-oset
  • rbtree-oset
Ian Kelling
źródło
Należy pamiętać, że ta opcja jest objęta licencją GPL i dlatego może być używana tylko legalnie w oprogramowaniu na licencji GPL.
Noah Andrews
19

SGLIB to doskonała ogólna biblioteka struktur danych. Biblioteka obecnie udostępnia ogólne implementacje dla:
sortowania tablic
list
połączonych posortowanych list
połączonych podwójnie połączonych list
czerwono-czarne drzewa
haszowane kontenery

Jest bardzo szybki, szybszy niż glib. Jest inspirowany biblioteką standardowych szablonów. Pobierz tutaj

Innym rozwiązaniem jest oprogramowanie atrakcyjne Chaos . Biblioteka makr C:
kbtree.h: wydajna biblioteka B-tree w C.
khash.h: szybka i lekka biblioteka tabel skrótów w C.
kvec.h: prosty kontener wektorowy w C.

Oprogramowanie Sglib i Attractive Chaos to biblioteka makr C. Używanie void * do implementacji ogólnych kontenerów w języku C może być nieefektywne. Makra C naśladują szablon C ++ i są tak wydajne jak szablon C ++

Lear
źródło
Niezłe wskazówki - nigdy wcześniej nie słyszałem o SGLIB.
Michael Burr
Link do pobrania dla projektu SGLIB jest uszkodzony. Wygląda na to, że już nie istnieje ...: /
luis.espinal
@ luis.espinal Nadal można go pobrać ze strony freecode.com/projects/sglib
Rob
Wygląda na to, że obie te biblioteki przestały działać.
Michael Foukarakis
3

Środowisko wykonawcze Apache Portable.

Jaap
źródło
3
Znaleziono tutaj: apr.apache.org
n8gray