Esistono librerie C open source con strutture dati comuni? [chiuso]


111

Sto cercando una libreria C con strutture dati comuni riutilizzabili come elenchi collegati, tabelle hash, ecc. Qualcosa come il sorgente distribuito con Mastering Algorithms with C (Paperback) di Kyle Loudon .


Altri siti sono più adatti a questo tipo di domande slant.co/improve/topics/19233
ideasman42

Risposte:


57

BSD queue.h ha:

  • SLIST = lista collegata singolarmente
  • LIST = lista doppiamente collegata
  • SIMPLEQ = coda collegata singolarmente
  • TAILQ = coda doppiamente collegata

BSD tree.h ha:

  • RB - albero rosso-nero
  • SPLAY - albero splay

Vedere le pagine man queue (3) e tree (3) per i dettagli. Mi piacciono molto perché sono macro C pure senza dipendenze (nemmeno libc). Inoltre, con la licenza BSD non devi preoccuparti di alcuna restrizione aziendale con GPL.


36

Gnome fornisce un'eccellente libreria per questo, chiamata Glib , con molte strutture dati utili e anche altre utilità.


30

gnulib , la libreria per la portabilità di gnu.

È distribuito come codice sorgente. Questo elenco proviene dal suo elenco di moduli , che include un sacco di altre cose. Uno interessante è "c-stack: gestione dell'overflow dello stack, che causa l'uscita dal programma".

  • elenco
  • lista di array
  • CArray-list
  • lista collegata
  • avltree-list
  • rbtree-list
  • linkedhash-list
  • avltreehash-list
  • rbtreehash-list
  • sublist (tipo di dati elenco sequenziale supportato da un altro elenco.)
  • oset (Insieme ordinato astratto.)
  • array-Oset
  • avltree-Oset
  • rbtree-Oset

Tieni presente che questa opzione è concessa in licenza GPL e quindi può essere utilizzata legalmente solo in software con licenza GPL.
Noah Andrews

19

SGLIB è un'eccellente libreria generica di strutture dati. La libreria attualmente fornisce implementazioni generiche per:
ordinare gli array
elenchi
collegati elenchi collegati ordinati elenchi
collegati doppi
alberi rosso-neri
contenitori con hash

È molto veloce, più veloce di disinvolto. È ispirato alla libreria di modelli standard. Scarica qui

Un'altra soluzione è il software attraente Chaos . Libreria di macro C:
kbtree.h: efficiente libreria B-tree in C.
khash.h: libreria di tabelle hash veloce e leggera in C.
kvec.h: semplice contenitore di vettori in C.

Il software Sglib e il software Chaos attraente sono librerie di macro C. Usare void * per implementare contenitori generici in C potrebbe essere inefficiente. Le macro C imitano il modello C ++ e sono efficienti quanto il modello C ++


Suggerimenti interessanti: non avevo mai sentito parlare di SGLIB prima.
Michael Burr

Il collegamento "download" per il progetto SGLIB è interrotto. Sembra essere defunto ...: /
luis.espinal

@ luis.espinal Può ancora essere scaricato da freecode.com/projects/sglib
Rob

Sembra che entrambe queste librerie siano diventate AWOL.
Michael Foukarakis




Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.