views:

1374

answers:

6

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.

+15  A: 

Gnome provides an excellent library for this, called Glib, with many useful data structures and other utilities as well.

Emil H
+8  A: 

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
Ian Kelling
+8  A: 

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.

HUAGHAGUAH
+6  A: 

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

Lear
Nice pointers - I'd never heard of SGLIB before.
Michael Burr
The "download" link for the SGLIB project is broken. Seems like going defunct... :/
luis.espinal
A: 

AT&T's software tools.

zvrba
A: 

The GDSL Library might be a good thing to consider:

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

luis.espinal