Linked Lists

The main confusion in linked lists comes from the difference between your pointer and your malloc'd space.

For instance, list->first is the dedicated space for pointing to the first node in your list.

nodePtr current = createNode();
list->first = current;

It's also a way of referring to the space it's pointing at

Another major problem, and the cause of many segfaults, is passing in NULL to things, or trying to set NULL to be something (e.g. current->next->value = 5, is fine if current->next != NULL, but not otherwise)

Always fucking assert that something you've just malloc()'d is not equal to NULL