一般的なデータ構造を持つオープンソースのCライブラリはありますか?[閉まっている]


111

リンクリスト、ハッシュテーブルなどの一般的な再利用可能なデータ構造を備えたCライブラリを探しています。KyleLoudonによるC(ペーパーバック)のマスタリングアルゴリズムで配布されたソースのようなもの。


他のサイトは、これらの種類の質問に適していますslant.co/improve/topics/19233
ideasman42

回答:


57

BSD queue.hに以下含まれます。

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

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

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

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


36

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


30

gnu移植性ライブラリgnulib

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

  • リスト
  • 配列リスト
  • キャレーリスト
  • リンクリスト
  • avltree-list
  • rbtree-list
  • linkedhash-list
  • avltreehash-list
  • rbtreehash-list
  • サブリスト(別のリストに基づく順次リストのデータ型。)
  • oset(抽象注文セット)
  • array-oset
  • avltree-oset
  • rbtree-oset

このオプションはGPLライセンスであり、GPLライセンスのソフトウェアでのみ合法的に使用できることに注意してください。
ノアアンドリュース

19

SGLIBは、優れた汎用データ構造ライブラリです。ライブラリは現在のための一般的な実装を提供します:
ソート配列
のリストを連結した
連結リストをソートし
、二重リンクリスト
赤黒木は
コンテナをハッシュ化

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

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

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


良い指針-SGLIBについて聞いたことがありません。
マイケルバー

SGLIBプロジェクトの「ダウンロード」リンクが壊れています。機能しなくなったようです...:/
luis.espinal

@ luis.espinalまだfreecode.com/projects/sglib
Rob

これらのライブラリは両方ともAWOLになっているようです。
Michael Foukarakis




弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.