Führen Sie insbesondere Implementierungen von Standard-C-Bibliotheken durch glibc (die GNU-C-Bibliothek) bieten verkettete Listen, Stack et al. Datenstrukturen, oder müssen wir unsere eigenen erstellen?
Vielen Dank.
rsjethani
Führen Sie insbesondere Implementierungen von Standard-C-Bibliotheken durch glibc (die GNU-C-Bibliothek) bieten verkettete Listen, Stack et al. Datenstrukturen, oder müssen wir unsere eigenen erstellen?
Vielen Dank.
Der C-Standard stellt keine Datenstrukturen wie Linked List und Stack bereit. Einige Compiler-Implementierungen stellen möglicherweise ihre eigenen Versionen bereit, aber ihre Verwendung ist nicht über verschiedene Compiler hinweg portierbar.
Also ja, Sie müssen Ihre eigenen schreiben.
Natürlich, wenn Sie sich nicht um Portabilität kümmern, lesen Sie einfach die Ziel-Compiler-Dokumentation, finden Sie die geeigneten Datenstrukturen, die sie bereitstellt, und verwenden Sie sie.
– Alok Speichern
22. Dezember 2012 um 9:52 Uhr
Der C-Standard tut dies nicht, glibc stellt jedoch Listen, Schwanzwarteschlangen und zirkuläre Warteschlangen bereit <sys/queue.h>
laut dem Warteschlange Manpage, die von BSD und nicht von POSIX stammen.
Ski
Es gibt Hash-Tabellen, Binärbäume und binäres Suchmaterial in glibc. Diese sind Teil der Standards C89, C99 und/oder POSIX.1. Aus irgendeinem Grund ist die verknüpfte Liste nicht vorhanden.
Weitere Informationen von Manpages: hsuche, Suche und bsuche
Notiz: Einige davon haben ein schlechtes Design. Zum Beispiel: hsearch
erlaubt nur eine Hash-Tabelle pro Prozess. Der GNU-Compiler gcc/glibc stellt ablaufinvariante Versionen bereit hcreate_r
, hsearch_r
und hdestroy_r
die mehrere Hash-Tabellen zulassen. Siehe auch die Verwendung von Stack Overflow hcreate_r
.
Als solches stellt C keine Datenstrukturen bereit, aber Sie können die verwenden glatt bereitgestellt von Gnome
Warteschlange.h Anzeige Baum.h bietet Ihnen auch einige Datenstrukturen
Es gibt eine Hash-Tabellen-Implementierung in POSIX (und GLibc); siehe die Manpages für hcreate/hdestroy/hsearch.
Aber wie bereits erwähnt, ist die Verwendung von glib wahrscheinlich der einfachste Weg, sich die Neuimplementierung der grundlegenden Datenstruktur zu ersparen.
Standardanruf
Wie bereits in anderen Antworten erwähnt, gibt es in der Standardbibliothek keine verknüpfte Listenbibliothek.
Ich habe vor einiger Zeit eine für meinen eigenen Gebrauch geschrieben. Sie können es frei verwenden oder den Code als Referenz verwenden.
Sie finden es hier: Liste
glibc ist nicht das gleiche wie die “Standard-C-Bibliothek”.
– Randy Howard
4. Mai 2013 um 23:35 Uhr
glibc-Lösung: stackoverflow.com/questions/16819910/…
– 0x90
29. Mai 2013 um 17:08 Uhr
Beachten Sie, dass es auch gnulib gibt: gnu.org/software/gnulib/MODULES.html#ansic_ext_container
– Daniel Jour
7. August 2016 um 23:07 Uhr
Karte: stackoverflow.com/questions/6118539/…
– Ciro Santilli OurBigBook.com
20. August 2017 um 18:47 Uhr