web-dev-qa-db-ja.com

共通のデータ構造を持つオープンソースのCライブラリはありますか?

リンクリスト、ハッシュテーブルなどの一般的な再利用可能なデータ構造を持つCライブラリを探しています。 Mastering Algorithms with C(Paperback)by Kyle Loudon

104
Vasil

BSD queue.h には:

  • SLIST =単一リンクリスト
  • LIST =二重リンクリスト
  • SIMPLEQ =単一リンクキュー
  • TAILQ =二重リンクキュー

BSD tree.h には以下が含まれます。

  • RB-赤黒の木
  • プレイ-スプレイツリー

詳細については、 queue(3) および tree(3) のマニュアルページを参照してください。依存関係のない純粋なCマクロ(libcでさえない)であるため、私は本当に気に入っています。さらに、BSDライセンスを使用すると、GPLによる企業の制限を心配する必要がありません。

54
HUAGHAGUAH

Gnomeは、このために Glib と呼ばれる優れたライブラリを提供し、多くの有用なデータ構造やその他のユーティリティも備えています。

37
Emil H

gnulib 、gnu移植性ライブラリ。

ソースコードとして配布されます。このリストは、 モジュールリスト からのもので、これには他のTONが含まれています。興味深いのは、「c-stack:スタックオーバーフロー処理、プログラムの終了を引き起こす」です。

  • リスト
  • 配列リスト
  • キャリーリスト
  • リンクリスト
  • avltree-list
  • rbtree-list
  • リンクされたハッシュリスト
  • avltreehash-list
  • rbtreehash-list
  • sublist(別のリストに連動するシーケンシャルリストデータ型。)
  • oset(抽象的な順序セット。)
  • 配列セット
  • avltree-oset
  • rbtree-oset
29
Ian Kelling

[〜#〜] sglib [〜#〜] は、優れた汎用データ構造ライブラリです。ライブラリは現在、次の汎用実装を提供します。
配列のソート
リンクリスト
並べ替えられたリスト
二重リンクリスト
赤黒の木
ハッシュされたコンテナ

これは非常に高速で、glibよりも高速です。標準テンプレートライブラリに触発されています。 ここからダウンロード

別の解決策は、 魅力的なカオスソフトウェア です。 Cマクロライブラリ:
kbtree.h:Cの効率的なBツリーライブラリ.
khash.h:Cの高速で軽量なハッシュテーブルライブラリ.
kvec.h:Cの単純なベクトルコンテナー.

Sglibと魅力的なカオスソフトウェアはCマクロライブラリです。 void *を使用してCで汎用コンテナーを実装するのは効率的ではない場合があります。 CマクロはC++テンプレートを模倣し、C++テンプレートと同じくらい効率的です。

19
Lear

GDSLライブラリーを検討するのは良いことです。

http://home.gna.org/gdsl/

5
luis.espinal

Apache Portable Runtime。

3
Jaap
0
Avinash