Sglib is a C library freely inspired by Standard Template Library (STL). It defines generic macros and functions for sorting arrays, manipulating lists, sorted lists, double linked lists, hashed containers, and red-black trees.
New users of the library should check the bug list for a couple of important fixes (depending on which features you use).
I like the idea macro based templating and the fact that you can use the data structure algorithms on your existing types. However, the singly linked list implementation adds elements onto the head of the list instead of the tail and thus later iteration is effectively in reverse. Perhaps I'm using it wrong?