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.