標準 C ライブラリの実装、特にglibc (GNU C ライブラリ) は、リンクされたリスト、スタックなどを提供します。データ構造ですか、それとも自分で作成する必要がありますか?
ありがとう。
標準 C ライブラリの実装、特にglibc (GNU C ライブラリ) は、リンクされたリスト、スタックなどを提供します。データ構造ですか、それとも自分で作成する必要がありますか?
ありがとう。
C 標準は、リンクされたリストやスタックなどのデータ構造を提供しません。一部のコンパイラの実装では、独自のバージョンが提供される場合がありますが、その使用法は異なるコンパイラ間で移植できません。
はい、あなたは自分で書く必要があります。
C標準にはありませんが、glibcはリスト、テールキュー、循環キューをキュー<sys/queue.h>
のマニュアルページに従って提供します。これらはPOSIXではなくBSDに由来します。
glibc には、ハッシュ テーブル、バイナリ ツリー、およびバイナリ検索機能があります。これらは、C89、C99、および/または POSIX.1 標準の一部です。何らかの理由でリンクされたリストがありません。
man ページからの詳細情報: hsearch、tsearch、およびbsearch
注:中にはデザインが悪いものもあります。例:hsearch
プロセスごとに 1 つのハッシュ テーブルのみを許可します。GNU コンパイラ gcc/glibc は、複数のハッシュ テーブルを許可する再入可能バージョンhcreate_r
、hsearch_r
、およびを提供します。hdestroy_r
Stack Overflow のHow to usehcreate_r
も参照してください。
そのため、C はデータ構造を提供しませんが、Gnome が提供するglibを使用できます。
POSIX(およびGLibc)にはハッシュテーブルの実装があります。hcreate / hdestroy/hsearchのマンページを参照してください。
ただし、前述のように、基本的なデータ構造を再実装する必要がないようにするには、おそらくglibを使用するのが最も簡単な方法です。
他の回答が既に述べたように、標準ライブラリにはリンクされたリスト ライブラリはありません。
少し前に自分用に書いたものです。自由に使用したり、コードを参照として使用したりできます。
ここで見つけることができます:libllist