2009-11-30 7 views
14

Estoy buscando una biblioteca probada estándar en lenguaje C (plataforma Windows) que implementa estructuras de datos como pilas, colas, árboles, etc.Biblioteca de estructura de datos estándar en C?

Preferiría tener un código fuente junto con él. Escribir una biblioteca por mi cuenta es posible; sin embargo, creo que es mejor optar por alguna implementación estándar de la industria que pueda optimizarse y tener menos errores.

El compilador es Visual Studio 2005/2008.

Respuesta

14

Glib

Descargar Glib para Windows here

+0

Estaba buscando un código fuente nativo de Windows que pudiera incorporar directamente en mi proyecto. También GLib viene con muchos otros complementos que no me interesaría. Solo quiero la biblioteca de estructura de datos. Lo revisaremos en detalle sin embargo. –

+3

¿Qué quiere decir con "fuente de Windows nativa"? – qrdl

+0

que se compila en C++ visual sin añadir dependencias. Más bien quise decir, un código compatible con ANSI C que se compila en Visual C++. cuando intento ver Glib me lleva al sitio GTK +. Entiendo que es una parte de la biblioteca que forma parte de un marco GTK + más grande. Por favor, corríjame si estoy equivocado. –

8
  • GDSL. Según los documentos, es puro ANSI C y debería funcionar con Visual C++.
  • C-generic-library
  • Kompimi. Biblioteca de estructura de datos C, con énfasis en colecciones. Viene con archivos de proyecto de Visual Studio.
+0

GDSL - información de la página principal. GSL está desarrollado en Debian GNU/Linux con gcc. Debe basarse en cualquier distribución GNU/linux con gcc. GDSL se ha probado con éxito en las siguientes distribuciones: Debian Mandrake RedHat Intentaré compilar en Visual C++. –

+0

Kompimi está en versión alfa. Me gustaría tener una biblioteca probada para mi aplicación. De lo contrario, habría escrito el mío de los libros que dan ejemplos. Para la biblioteca C-generic no pude obtener el código en la sección de descargas o incluso consultar el svn. –

4

Echa un vistazo cbase. Su LGPL (la mayoría de las otras bibliotecas son GPL) si la licencia es algo que le concierne.

Mi único comentario es que requiere C99 o GCC. Utiliza macros variadas, que no son compatibles con C89. Debería compilarse bien bajo VC2005/2008.

cbase es una biblioteca C de funciones útiles que simplifican el desarrollo de software de sistemas en System V UNIX. La biblioteca incluye rutinas para administración de memoria, análisis sintáctico de cadenas, traspaso del sistema de archivos, ejecución de subprocesos, E/S, así como implementaciones de estructuras de datos comunes tales como listas vinculadas, tablas hash, stacks y colas. La biblioteca también incluye una interfaz de alto nivel para los sockets de Berkeley, y una implementación de un planificador que tiene una funcionalidad muy similar a la del cron daemon. Nota: cbase anteriormente se conocía como CFL.

2

¿Ha revisado qLibc? Es una implementación C de código abierto que ofrece varios tipos de strucutre datos como tabla hash, lista enlazada, cola, pila ...

A partir de hoy, desde su página web veo que ha siguiente conjunto de características:

  • Contenedores
    • Lista --- Lista doblemente enlazada.
    • Tabla de la lista --- KEY/VALUE tabla emparejada implementada en lista enlazada.
    • Tabla Hash --- Hash basada KEY/VALUE tabla emparejada.
    • Static Hash Table --- Tabla emparejada KEY/VALUE estática (array/mmapped/shared) basada en memoria.
    • Vector --- implementa una gran variedad de elementos.
    • Implementación Queue --- FIFO (Primero en entrar primero en salir).
    • Implementación Stack --- LIFO (último en entrar primero en salir).
  • Servicios generales.
    • Cuerda
    • /S
    • Archivo
    • de acoplamiento, semáforos de memoria compartida
    • In/decodificadores
    • Hashes
    • Sistema
    • Tiempo
  • Extensiones I
    • Analizador de archivos de configuración de estilo INI.
    • Analizador de archivos de configuración de estilo Apache.
    • Registrador de archivos giratorio.
    • Cliente HTTP.
    • Interfaz de base de datos (MySQL).

En cada implementación de contenedor, se explica claramente la estructura de datos interna en la parte superior de código. Por lo tanto, sería útil que captara las ideas de implementación.

El código se puede encontrar en https://github.com/wolkykim/qlibc

Espero que esto ayude. (Por favor vote si esto ayuda, necesito algunos puntos. Gracias :)

Cuestiones relacionadas