La biblioteca estándar de c proporciona una lista enlazada, etc. ¿estructuras de datos?


Las implementaciones de bibliotecas C estándar, especialmente glibc (la Biblioteca C de GNU) proporcionan listas enlazadas, stack et al. estructuras de datos,o tenemos que rodar nuestra propia?

Gracias.

Author: James Ko, 2012-12-22

6 answers

El estándar C no proporciona estructuras de datos como la lista enlazada y la pila.Algunas implementaciones de compiladores pueden proporcionar sus propias versiones, pero su uso no será portable a través de diferentes compiladores.

Así que Sí, tienes que escribir el tuyo.

 18
Author: Alok Save,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-22 09:29:41

El estándar C no lo hace, glibc sin embargo proporciona listas, colas de cola y colas circulares en <sys/queue.h> de acuerdo con la página man queue que provienen de BSD y no de POSIX.

 21
Author: iabdalkader,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-22 09:40:42

Hay tablas hash, árboles binarios y cosas de búsqueda binaria en glibc. Estos son parte de C89, C99 y / o POSIX.1 normas. Alguna lista enlazada razón no está allí.

Más información de las páginas de manual: hsearch, tsearch y bsearch

Nota: Algunos de ellos tienen mal diseño. Por ejemplo: hsearch solo permite una tabla hash por proceso. El compilador de GNU, gcc / glibc, proporciona versiones de reentradahcreate_r, hsearch_r, y hdestroy_r que permiten múltiples tablas hash. Ver también Stack Overflow's Cómo usar hcreate_r.

 18
Author: SKi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 10:31:25

Como tal, C no proporciona estructuras de datos, pero puede usar el glib proporcionado por Gnome

Cola.h ad Árbol.h también le proporciona algunas estructuras de datos

 6
Author: Rahul Tripathi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-22 09:29:59

Hay una implementación de tabla hash en POSIX (y GLibc); vea las páginas de manual para hcreate/hdestroy/hsearch.

Pero, como se mencionó, usar glib es probablemente la forma más fácil de ahorrarse la reimplementación de la estructura de datos básica.

 2
Author: djcb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-23 14:03:24

Como ya se ha indicado en otras respuestas, no hay una biblioteca de listas enlazadas en la biblioteca estándar.

He escrito uno para mi propio uso hace un tiempo. Puede usarlo libremente o usar el código como referencia.

Lo puedes encontrar aquí: lista de libros

 2
Author: stdcall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-29 18:04:58