我正在寻找一个带有常见的可重用数据结构的C库,比如链表,哈希表等.像Kyle Loudon那样使用C语言(Masterback Algorithms with C)进行分发.
BSD queue.h有:
SLIST =单链表
LIST =双重链表
SIMPLEQ =单链接队列
TAILQ =双向链接队列
BSD tree.h有:
RB - 红黑树
SPLAY - splay树
有关详细信息,请参见queue(3)和tree(3)手册页.我真的很喜欢它们,因为它们是没有依赖关系的纯C宏(甚至不是libc).再加上BSD许可证,您无需担心任何公司对GPL的限制.
Gnome为此提供了一个很好的库,称为Glib,它还具有许多有用的数据结构和其他实用程序.
gnulib,gnu可移植性库.
它作为源代码分发.此列表来自其模块列表,其中包含一些其他内容.一个有趣的是"c-stack:堆栈溢出处理,导致程序退出."
名单
数组列表
CARRAY列表
链表
avltree列表
rbtree列表
linkedhash列表
avltreehash列表
rbtreehash列表
子列表(由另一个列表支持的顺序列表数据类型.)
oset(抽象有序集.)
阵列OSET
avltree-OSET
rbtree-OSET
SGLIB是一个出色的通用数据结构库.该库目前提供通用实现:
排序数组
链表
排序链表
双链表
红黑树
散列容器
它比glib快得多,速度快.它的灵感来自标准模板库.在这里下载
另一个解决方案是Attractive Chaos软件.C宏库:
kbtree.h :C.khash.h中的高效B树库
:C. kvec.h中的快速和轻量级哈希表库
:C中的简单向量容器
Sglib和Attractive Chaos软件是C宏库.使用void*在C中实现通用容器可能效率低下.C宏模仿C++模板,并且与C++模板一样高效
GDSL库可能是一件好事:
http://home.gna.org/gdsl/