97 #define add_on(l,x) l = push (l,first_node (x))
98 #define next_one(l) l = list_rest (l)
129 if (is_equal ==
NULL)
160 if (!(*is_equal).Run (
first_node (list), key)) {
205 if (destructor ==
NULL)
242 return (item1 == item2);
253 return (!strcmp ((
char *) item1, (
char *) item2));
393 result = (*compare) (variable,
first_node (l));
396 else if (result < 0) {
414 if (is_equal ==
NULL)
void memfree(void *element)
LIST reverse_d(LIST list)
LIST s_adjoin(LIST var_list, void *variable, int_compare compare)
LIST join(LIST list1, LIST list2)
void insert(LIST list, void *node)
#define set_rest(l, cell)
#define copy_first(l1, l2)
int(* int_compare)(void *, void *)
int is_same_node(void *item1, void *item2)
LIST search(LIST list, void *key, int_compare is_equal)
LIST push_last(LIST list, void *item)
void destroy_nodes(LIST list, void_dest destructor)
void(* void_dest)(void *)
int is_same(void *item1, void *item2)
LIST delete_d(LIST list, void *key, int_compare is_equal)
void * nth_cell(LIST var_list, int item_num)
LIST push(LIST list, void *element)