https://medium.com/@theodoretsori/mastering-doubly-linked-lists-in-c-understanding-and-implementing-the-powerful-data-structure-efaf8c49ffb0