53

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

ありがとう。

4

6 に答える 6

27

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

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

于 2012-12-22T09:29:41.623 に答える
26

C標準にはありませんが、glibcはリスト、テールキュー、循環キューをキュー<sys/queue.h>のマニュアルページに従って提供します。これらはPOSIXではなくBSDに由来します。

于 2012-12-22T09:40:42.973 に答える
21

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

man ページからの詳細情報: hsearchtsearch、およびbsearch

注:中にはデザインが悪いものもあります。例:hsearchプロセスごとに 1 つのハッシュ テーブルのみを許可します。GNU コンパイラ gcc/glibc は、複数のハッシュ テーブルを許可する再入可能バージョンhcreate_rhsearch_r、およびを提供します。hdestroy_rStack Overflow のHow to usehcreate_rも参照してください。

于 2012-12-23T15:12:27.887 に答える
5

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

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

于 2012-12-22T09:29:59.397 に答える
2

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

ただし、前述のように、基本的なデータ構造を再実装する必要がないようにするには、おそらくglibを使用するのが最も簡単な方法です。

于 2012-12-23T14:03:24.367 に答える
2

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

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

ここで見つけることができます:libllist

于 2015-05-29T18:04:58.743 に答える