web-dev-qa-db-ja.com

標準Cライブラリは、リンクリストなどのデータ構造を提供しますか?

標準のCライブラリの実装、特にglibc(GNU C Library)はリンクリスト、スタックなどのデータ構造を提供しますか、それとも独自のロールを作成する必要がありますか?

ありがとう。

47
rsjethani

C標準は、リンクリストやスタックなどのデータ構造を提供しません。一部のコンパイラ実装は独自のバージョンを提供する場合がありますが、その使用法は異なるコンパイラ間で移植できません。

はい、あなたは自分で書く必要があります。

18
Alok Save

C標準ではサポートされていませんが、glibcは、POSIXではなくBSDから来た queue manページに従って、<sys/queue.h>でリスト、テールキュー、および循環キューを提供します。

22
iabdalkader

Glibcにはハッシュテーブル、バイナリツリー、バイナリ検索などがあります。これらは、C89、C99および/またはPOSIX.1標準の一部です。何らかの理由でリンクリストがありません。

Manページの詳細情報: hsearchtsearch 、および bsearch

注:それらのいくつかはデザインが悪いです。例:hsearchは、プロセスごとに1つのハッシュテーブルのみを許可します。 GNUコンパイラ、gcc/glibcは、リエントラントバージョンを提供します hcreate_rhsearch_r、およびhdestroy_r 複数のハッシュテーブルを許可します。スタックオーバーフローも参照してください 使用方法hcreate_r

20
SKi

そのため、Cはデータ構造を提供しませんが、Gnomeが提供する glib を使用できます

Queue.h ad Tree.h は、いくつかのデータ構造も提供します

5
Rahul Tripathi

他の回答がすでに述べたように、標準ライブラリにはリンクリストライブラリはありません。

少し前に自分用に書いた。自由に使用するか、参照としてコードを使用できます。

ここにあります: libllist

2
stdcall

POSIX(およびGLibc)にはハッシュテーブルの実装があります。 hcreate/hdestroy/hsearchのマンページを参照してください。

ただし、前述したように、glibを使用することが、基本的なデータ構造を再実装する手間を省く最も簡単な方法です。

2
djcb