I've often thought that C developers are constrained in data manipulation by the relative paucity of the libraries that C provides. String manipulation, lists or hash. C++ has it's standard library and C# has the FCL.
I mentioned uthash back three years ago. It implements a hash table with add, find, delete,count, iterate, sort and select operations in less than 1,000 lines of code that's included in a header file.
It's worth mentioning again because it also includes linked list (single, double and circular double), a general purpose dynamic array and a string manipulation library all done as macros. These like uthash are all platform independent, free and open source and I think I'll start using them in some of the game tutorials code.
- List of Hash Libraries for C developers.


I prefer GLib
http://www.ibm.com/developerworks/linux/tutorials/l-glib/l-glib-pdf.pdf