是否有任何具有通用数据结构的开源C库?

时间:2009-03-21 00:59:13

标签: c data-structures

我正在寻找一个具有常见可重用数据结构的C库,例如链表,哈希表等。像Mastering Algorithms with C (Paperback) by Kyle Loudon一样分发的源代码。

8 个答案:

答案 0 :(得分:52)

BSD queue.h有:

  • SLIST =单链表
  • LIST =双重链表
  • SIMPLEQ =单链接队列
  • TAILQ =双重链接队列

BSD tree.h有:

  • RB - 红黑树
  • SPLAY - splay tree

有关详细信息,请参阅queue(3)tree(3)手册页。我真的很喜欢它们,因为它们是没有依赖关系的纯C宏(甚至不是libc)。再加上BSD许可证,您无需担心GPL的任何公司限制。

答案 1 :(得分:37)

Gnome为此提供了一个很好的库,名为Glib,还有许多有用的数据结构和其他实用程序。

答案 2 :(得分:28)

gnulib,gnu可移植性库。

它作为源代码分发。 此列表来自其module list,其中包含一些其他内容。一个有趣的是“c-stack:堆栈溢出处理,导致程序退出。”

  • 列表
  • array-list
  • CARRAY列表
  • 链表
  • avltree列表
  • rbtree列表
  • linkedhash列表
  • avltreehash列表
  • rbtreehash列表
  • 子列表(由另一个列表支持的顺序列表数据类型。)
  • oset(抽象有序集。)
  • 阵列OSET
  • avltree-OSET
  • rbtree-OSET

答案 3 :(得分:18)

SGLIB是一个出色的通用数据结构库。该库目前提供以下通用实现:
排序阵列
链表
已排序的链接列表
双链表
红黑树 散列容器

它比glib快得多,速度快。它的灵感来自标准模板库。 Download Here

另一个解决方案是Attractive Chaos software。 C宏库:
kbtree.h:C中有效的B树库。
khash.h:C中的快速和轻量级哈希表库。
kvec.h:C中的简单向量容器

Sglib和Attractive Chaos软件是C宏库。使用void *在C中实现通用容器可能效率低下。 C宏模仿C ++模板,并且与C ++模板一样高效

答案 4 :(得分:5)

GDSL图书馆可能是一件好事:

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

答案 5 :(得分:3)

Apache Portable Runtime。

答案 6 :(得分:0)

答案 7 :(得分:-2)

AT& T的software tools