#ifndef CA_UWATERLOO_DWHARDER_C_LINKED_LIST_T #define CA_UWATERLOO_DWHARDER_C_LINKED_LIST_T #include // Needed for type 'bool' #include // Needed for type 'size_t' // Declare data structures struct node; struct linked_list; // Type definitions typedef struct node node_t; typedef struct linked_list linked_list_t; // Define data structures struct node { int value; node_t *p_next; }; struct linked_list { node_t *p_head; node_t *p_tail; size_t size; }; // Declare functions void init_linked_list( linked_list_t *p_list ); int front( linked_list_t *p_list, bool *p_valid ); int back( linked_list_t *p_list, bool *p_valid ); void push_front( linked_list_t *p_list, int new_value ); void push_back( linked_list_t *p_list, int new_value ); void pop_front( linked_list_t *p_list ); node_t *find( linked_list_t *p_list, int sought_value ); #endif