#ifndef LIST_H #define LIST_H #include #include typedef struct NODE_STRUCT { void *item; struct NODE_STRUCT *next; struct NODE_STRUCT *prev; } node_t; typedef struct { size_t size; node_t *head; node_t *tail; } list_t; node_t *init_node(void *item); void node_free(void *x, void (*freefunc)(void *)); list_t *init_list(); void list_push_front(list_t *l, void *x); void list_push_back(list_t *l, void *x); void *list_pop_back(list_t *l); void *list_pop_front(list_t *l); bool list_is_empty(list_t *l); void list_free(void *x, void (*freefunc)(void *)); #endif