127 #define NIL_LIST  ((LIST)nullptr)   140 #define list_rest(l)  ((l) ? (l)->next : NIL_LIST)   141 #define first_node(l) ((l) ? (l)->node : NIL_LIST)   151 #define copy_first(l1,l2)  \   152 (l2=push(l2, first_node(l1)))   162 for (; (l) != NIL_LIST; (l) = list_rest (l))   172 #define iterate_list(x,l)  \   173 for ((x)=(l); (x)!=0; (x)=list_rest(x))   182 #define JOIN_ON(list1,list2)    \   183 ((list1) = join ((list1), (list2)))   192 #define pop_off(list)    \   193 ((list) = pop (list))   202 #define push_on(list,thing)    \   203 ((list) = push (list, (LIST) (thing)))   213 #define second_node(l)              \   214 first_node (list_rest (l))   224 #define set_rest(l,cell)\   236 first_node (list_rest (list_rest (l)))   254 int is_same(
void *item1, 
void *item2);
 LIST delete_d(LIST list, void *key, int_compare is_equal)
LIST push(LIST list, void *element)
int is_same(void *item1, void *item2)
LIST push_last(LIST list, void *item)
LIST search(LIST list, void *key, int_compare is_equal)
void(* void_dest)(void *)
void * nth_cell(LIST var_list, int item_num)
LIST reverse_d(LIST list)
int(* int_compare)(void *, void *)
void destroy_nodes(LIST list, void_dest destructor)
LIST join(LIST list1, LIST list2)
LIST s_adjoin(LIST var_list, void *variable, int_compare compare)
void insert(LIST list, void *node)