Are there any open source C libraries with common data structures?

Viewed 67642
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.

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

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

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

Related