I'm looking for a C library with common reusable data structures like linked lists, hash tables etc. Something like the source distributed with Mastering Algorithms with C (Paperback) by Kyle Loudon.
8 Answers
BSD queue.h has:
- SLIST = singly linked list
- LIST = doubly linked list
- SIMPLEQ = singly linked queue
- TAILQ = doubly linked queue
BSD tree.h has:
- RB - red-black tree
- SPLAY - splay tree
See the queue(3) and tree(3) man pages for details. I really like them because they are pure C macros without dependencies (not even libc). Plus with the BSD license you don't have to worry about any company restrictions w/ GPL.
Comments
Gnome provides an excellent library for this, called Glib, with many useful data structures and other utilities as well.
Comments
gnulib, the gnu portability library.
It's distributed as source code. This list is from its module list, which includes a TON of other things. One interesting one is "c-stack: Stack overflow handling, causing program exit."
- list
- array-list
- carray-list
- linked-list
- avltree-list
- rbtree-list
- linkedhash-list
- avltreehash-list
- rbtreehash-list
- sublist ( Sequential list data type backed by another list. )
- oset (Abstract ordered set.)
- array-oset
- avltree-oset
- rbtree-oset
1 Comment
SGLIB is an excellent generic data-structures library. The library currently provides generic implementations for:
sorting arrays
linked lists
sorted linked lists
double linked lists
red-black trees
hashed containers
It's very fast, faster than glib. It's inspired by the Standard Template Library. Download Here
Another solution is Attractive Chaos software.
C macro library:
kbtree.h: efficient B-tree library in C.
khash.h: fast and light-weighted hash table library in C.
kvec.h: simple vector container in C.
Sglib and Attractive Chaos software are C macros library. Using void* to implement generic containers in C may be inefficient. C macros mimics C++ template and are as efficient as C++ template