#ifndef CA_UWATERLOO_DWHARDER_C_LINKED_LIST_PTR_T #define CA_UWATERLOO_DWHARDER_C_LINKED_LIST_PTR_T #include // Needed for type 'bool' #include // Needed for type 'size_t' // Declare data structures struct node_ptr; struct linked_list_ptr; // Type definitions typedef struct node_ptr node_ptr_t; typedef struct linked_list_ptr linked_list_ptr_t; // Define data structures struct node_ptr { void *p_value; node_t *p_next; }; struct linked_list_ptr { node_ptr_t *p_head; node_ptr_t *p_tail; size_t size; }; // Declare functions void init_ptr( linked_list_t *p_list ); void *front_ptr( linked_list_t *p_list, bool *p_valid ); void *back_ptr( linked_list_t *p_list, bool *p_valid ); void push_front_ptr( linked_list_t *p_list, void *p_new_value ); void push_back_ptr( linked_list_t *p_list, void *p_new_value ); void pop_front_ptr( linked_list_t *p_list ); node_t *find_ptr( linked_list_t *p_list, void *p_sought_value ); #endif