Questa pagina elenca una raccolta di librerie che ti aiuteranno nella programmazione in C. Le librerie qui sono open source e utilizzate per aiutarti a memorizzare i dati, senza dover creare il tuo elenco di collegamenti ecc. Strutture di dati.
Sviluppato da Troy D. Hanson, qualsiasi struttura C può essere memorizzata in una tabella hash usando uthash. Basta includere #include "uthash.h", quindi aggiungere un UT_hash_handle alla struttura e scegliere uno o più campi nella struttura per fungere da chiave. Quindi utilizzare HASH_ADD_INT, HASH_FIND_INT e le macro per archiviare, recuperare o eliminare elementi dalla tabella hash. Utilizza chiavi int, string e binarie.
Judy è una libreria C che implementa una matrice dinamica sparsa. Judy array sono dichiarati semplicemente con un null pointer e consuma memoria solo quando popolata. Possono crescere per utilizzare tutta la memoria disponibile se lo si desidera. I vantaggi chiave di Judy sono scalabilità, prestazioni elevate ed efficienza della memoria. Può essere utilizzato per array di dimensioni dinamiche, array associativi o un'interfaccia di semplice utilizzo che non richiede rilavorazione per espansione o contrazione e può sostituire molti strutture di dati comuni, come matrici, matrici sparse, tabelle hash, alberi B, alberi binari, liste lineari, skiplist, altri algoritmi di ordinamento e ricerca e conteggio funzioni.
SGLIB è l'abbreviazione di Simple Generic Library ed è costituito da un singolo file di intestazione sglib.h che fornisce l'implementazione generica degli algoritmi più comuni per array, elenchi, elenchi ordinati e alberi rosso-neri. La libreria è generica e non definisce le proprie strutture di dati. Piuttosto agisce su strutture di dati definite dall'utente esistenti tramite un'interfaccia generica. Inoltre non alloca o dealloca alcuna memoria e non dipende da una particolare gestione della memoria.
Tutti gli algoritmi sono implementati sotto forma di macro parametrizzate dal tipo di struttura dei dati e funzione di confronto (o macro di confronto). Per alcuni algoritmi e strutture dati potrebbero essere necessari diversi altri parametri generici come il nome del campo "successivo" per gli elenchi collegati.