- the api/declarations reside in a .h file with proper function description/documentation
- the implementation resides in a .c file
- keep the line as long as possible, don't break things where not neccessary.
- always free after malloc, then use malloc to check for leaks
- function declaration and implementation order should match in header and source file.
- don't use typedefs where not neccessary.
- binary trees (normal/avl/others)
- linked lists (single/double)
- stack, heap and queue
- matrix
- trie and hashmap