131

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.

1

8 Answers 8

62

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.

Sign up to request clarification or add additional context in comments.

Comments

39

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

Comments

33

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

Keep in mind that this option is GPL-licensed, and therefore can only be used legally in GPL-licensed software.
21

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

5 Comments

Nice pointers - I'd never heard of SGLIB before.
The "download" link for the SGLIB project is broken. Seems like going defunct... :/
@luis.espinal It can still be downloaded from freecode.com/projects/sglib
Seems both these libs have gone AWOL.
klib has some activity, but i cant find any other hashtable fast as this, someone has some other option? github.com/attractivechaos/klib/commits/master
5

The GDSL Library might be a good thing to consider:

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

Comments

3

The Apache Portable Runtime.

1 Comment

Found here: apr.apache.org
-1

CLIB

2 Comments

This points to a page saying that the library has moved off to code.google.com/p/clibutils.
And now it appears to be: github.com/davinash/cstl It hasn't been updated since 2012 though.
-4

AT&T's software tools.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.