是否有具有通用数据结构的开源C库?[关闭]


111

我正在寻找具有常见可重用数据结构(如链表,哈希表等)的C库。类似Kyle Loudon的C(平装)母版分发算法的源代码。


其他站点更适合此类问题slant.co/improve/topics/19233
ideaman42 '19

Answers:


57

BSD queue.h具有:

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

BSD tree.h具有:

  • RB-红黑树
  • SPLAY-SPLAY树

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


36

Gnome为此提供了一个出色的库,称为Glib,其中包含许多有用的数据结构和其他实用程序。


30

gnulib,gnu可移植性库。

它作为源代码分发。该列表来自其模块列表,其中包括大量其他信息。一个有趣的例子是“ c-stack:堆栈溢出处理,导致程序退出”。

  • 清单
  • 数组列表
  • 卡列清单
  • 链表
  • avltree列表
  • rbtree列表
  • 链接哈希表
  • avltreehash列表
  • rbtreehash列表
  • 子列表(由另一个列表支持的顺序列表数据类型。)
  • 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,2010年

@ luis.espinal仍然可以从freecode.com/projects/sglib
Rob

似乎这两个库都已消失。
Michael Foukarakis




By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.