
/*
 * [ head | tail ]
 *     |      \
 *     |       ------------
 *     |                   \
 *  [ 5 ] <-> [ 42 ] <-> [ 17 ]
 */

typedef struct LinkedList LinkedList;
typedef struct LinkedListNode LinkedListNode;


struct LinkedList {
    LinkedListNode* head;
    LinkedListNode* tail;
};


struct LinkedListNode {
    int data;
    LinkedListNode* next;
    LinkedListNode* prev;
};


// Create empty list of size 0
LinkedList* init_linkedlist();

// Append to the end of the linked list
void append(LinkedList* ll, int data);

void size(LinkedList* ll);
