Sto cercando una libreria C con strutture di dati riutilizzabili comuni come elenchi concatenati, tabelle hash, ecc. Qualcosa come l'origine distribuita con Mastering Algorithms with C (Paperback) by Kyle Loudon.Esistono librerie C open source con strutture dati comuni?
risposta
Gnome fornisce una libreria eccellente per questo, denominata Glib, con molte strutture dati utili e altre utilità pure.
gnulib, la libreria di portabilità di gnu.
È distribuito come codice sorgente. Questo elenco è dal suo module list, che include un TON di altre cose. Uno interessante è "c-stack: gestione dello straripamento dello stack, che causa l'uscita dal programma."
- lista
- array-list
- CArray-list
- liste concatenate
- avltree-list
- rbtree-list
- linkedhash-list
- avltreehash-list
- rbtreehash-list
- sottolista (tipo di dati elenco sequenziale supportato da un altro elenco.)
- oset (Abstract insieme ordinato)
- array-oset
- avltree-oset
- rbtree-oset
BSD queue.h ha:. Lista
- SLIST = singolarmente concatenata
- LISTA = lista doppiamente collegata
- SIMPLEQ = singolarmente legata coda
- TAILQ = doppiamente legata coda
BSD tree.h ha:
- RB - albero rosso-nero
- SUALIZZA - splay albero
See le pagine man queue(3) e tree(3) per i dettagli. Mi piacciono molto perché sono puri macro C senza dipendenze (nemmeno libc). Inoltre con la licenza BSD non ti devi preoccupare delle restrizioni aziendali con GPL.
SGLIB è un'eccellente libreria di strutture dati generiche.La biblioteca attualmente fornisce le implementazioni generiche per:
ordinamento array
liste collegate
elenchi ordinati legati
doppie liste collegate
alberi rosso-neri
contenitori hash
E 'molto veloce, più veloce di glib. È ispirato alla libreria di modelli standard. Download Here
Un'altra soluzione è Attractive Chaos software. C macro libreria:
kbtree.h: efficiente libreria B-tree in C.
khash.h: veloce e biblioteca tavolo luminoso ponderata hash in C.
kvec.h: semplice contenitore vettore in C.
Il software Sglib e Attractive Chaos è una libreria di macro C. L'utilizzo di void * per implementare contenitori generici in C può essere inefficiente. Le macro C imitano il modello C++ e sono efficienti quanto il modello C++
Nizza puntatori - che non avevo mai sentito parlare di SGLIB prima . –
Il collegamento "download" per il progetto SGLIB è interrotto. Sembra come andare defunto ...:/ –
@ luis.espinal Può ancora essere scaricato da http://freecode.com/projects/sglib – Rob
AT & T software tools.
Il GDSL biblioteca potrebbe essere una buona cosa da considerare:
Vedi http://stackoverflow.com/questions/649649/any-library-for-generic-datatypes-in-c/649673#649673 – qrdl