2009-11-30 25 views
14

Sto cercando una libreria standard collaudata in linguaggio C (piattaforma Windows) che implementa strutture di dati come pile, code, alberi ecc.Libreria di strutture dati standard in C?

Preferirei avere un codice sorgente insieme ad esso. Scrivere una biblioteca da solo è possibile; tuttavia, ritengo che potrebbe essere preferibile optare per alcune implementazioni standard del settore che potrebbero essere ottimizzate e meno buggy.

Il compilatore è Visual Studio 2005/2008.

risposta

14

Glib

Scarica Glib per Windows here

+0

Stavo cercando un codice sorgente nativo di Windows che potrei incorporare direttamente nel mio progetto. Anche GLib viene fornito con molti altri addon che non sarei interessato. Voglio solo la libreria della struttura dei dati. Verificherò in dettaglio però. –

+3

Cosa intendi per "fonte nativa di Windows"? – qrdl

+0

che si compila su visual C++ senza alcuna aggiunta di dipendenze. Piuttosto intendevo dire, un codice conforme ANSI C che compila in visual C++. quando provo a visualizzare Glib ci vuole il sito GTK +. Capisco che sia una parte della libreria che fa parte del più grande framework GTK +. Perfavore, correggimi se sbaglio. –

8
  • GDSL. Come per i documenti, è puro ANSI C e dovrebbe funzionare con Visual C++.
  • C-generic-library
  • Kompimi. Libreria della struttura dati C, con particolare attenzione alle collezioni. Viene fornito con i file di progetto di Visual Studio.
+0

GDSL - informazioni dalla pagina principale. GSL è sviluppato su Debian GNU/Linux con gcc. Dovrebbe basarsi su qualsiasi distribuzione GNU/Linux con gcc. GDSL è stato testato con successo nelle seguenti distribuzioni: Debian Mandrake RedHat Proverò a compilarlo in Visual C++. –

+0

Kompimi è in versione alfa. Mi piacerebbe avere una libreria collaudata per la mia applicazione. Altrimenti avrei scritto il mio dai libri che forniscono esempi. Per la libreria C-generic non sono riuscito a ottenere il codice nella sezione download o anche a controllare lo svn. –

4

Check out cbase. La sua LGPL (la maggior parte delle altre librerie è GPL) se la licenza è qualcosa che ti riguarda.

Il mio unico commento è che richiede C99 o GCC. Utilizza macro variadiche, che non sono compatibili con C89. Dovrebbe compilare la sanzione sotto VC2005/2008.

cbase è una libreria C di funzioni utili che semplificano lo sviluppo di software di sistema su System V UNIX. La libreria include routine per la gestione della memoria, l'analisi delle stringhe, l'attraversamento del filesystem, l'esecuzione di sottoprocessi, I/O, nonché le implementazioni di strutture dati comuni come liste collegate, tabelle hash, stack e code. La libreria include anche un'interfaccia di alto livello per i socket Berkeley e un'implementazione di uno schedulatore con funzionalità molto simili a quelle del demone cron. Nota: cbase era precedentemente noto come CFL.

2

Avete verificato qLibc? Si tratta di un'implementazione C opensource che fornisce vari tipi di strucutre dati come tabella di hash, lista collegata, coda, pila ...

A partire da oggi, dal suo sito vedo che ha le seguenti set di funzionalità:

  • Contenitori
    • Elenco --- lista doppia.
    • Tabella elenco --- tabella accoppiata KEY/VALUE implementata nella lista concatenata.
    • Tabella hash --- tabella accoppiata KEY/VALUE basata su hash.
    • Tabella hash statica --- tabella accoppiata KEY/VALUE basata su memoria statica (array/mmapped/shared).
    • Vector --- implementa una serie crescente di elementi.
    • Coda --- Implementazione FIFO (First In First Out).
    • Stack --- implementazione LIFO (Last In First Out).
  • Servizi di pubblica utilità.
    • String
    • I/O
    • File
    • IPC, i semafori a memoria condivisa
    • En/decoder
    • hash
    • sistema
    • Tempo
  • estensioni
    • Parser file di configurazione in stile INI.
    • Analizzatore file di configurazione in stile Apache.
    • Logger di file rotante.
    • Client HTTP.
    • Interfaccia database (MySQL).

In ogni implementazione contenitore, spiega chiaramente struttura dati interna nella parte superiore del codice. Quindi sarebbe utile per te cogliere le idee di implementazione.

Il codice può essere trovato alla https://github.com/wolkykim/qlibc

Spero che questo aiuti. (Si prega di votare se questo aiuta, ho bisogno di alcuni punti.Grazie :)