Bietet die Standard-C-Bibliothek verkettete Listen usw. Datenstrukturen?

Lesezeit: 2 Minuten

Benutzeravatar von rsjethani
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.

  • 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

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.

Benutzeravatar von SKi
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_rund 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.

Benutzeravatar von stdcall
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

1413280cookie-checkBietet die Standard-C-Bibliothek verkettete Listen usw. Datenstrukturen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy