Linked lists

Reddit description that I liked:

In a language like C, you manage memory yourself. If you have an arbitrarily sized number of elements to add to an array, and you don't allocate enough memory to your array to hold them, you will have problems. So what do you do if you aren't sure how many items will be added to a list (and therefore how much memory to allocate)? One solution is to use a linked list. This is a series of nodes. You can think of a node as an object that has two properties: the data you want to hold and then a pointer to where you can find the next node, which itself holds another piece of data and the pointer to the next object on the linked list. I like to visualize this as a string of beads, each bead being a node.

References