76#define NIL_LIST static_cast<LIST>(nullptr)
91#define list_rest(l) ((l) ? (l)->next : NIL_LIST)
92#define first_node(l) ((l) ? (l)->node : NIL_LIST)
101#define iterate(l) for (; (l) != NIL_LIST; (l) = list_rest(l))
111#define set_rest(l, cell) ((l)->next = (cell))
LIST push_last(LIST list, void *item)
void(*)(void *) void_dest
void destroy_nodes(LIST list, void_dest destructor)
LIST search(LIST list, void *key, int_compare is_equal)
LIST delete_d(LIST list, void *key, int_compare is_equal)
void insert(LIST list, void *node)
int(*)(void *, void *) int_compare
LIST push(LIST list, void *element)