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.
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
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.
SGLIB is a excelent generic data structures library. The library currently provides generic implementation for:
sorting arrays
linked lists
sorted linked lists
double linked lists
red-black trees
hashed containers
It's very fast. More fastest that glib. It's inspired by the Standard Template Library. Download Here
Another solution is Attractive Chaos sotware.
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 sotware 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