void list_append (struct list *list, int data) { if (list==NULL) { return; } struct list_element *elem = list_new_elem(data); if (elem==NULL) { return; } assert(list!=NULL); if ( list->first == NULL && list->last == NULL) { list->first = elem; list->last = elem; elem->prev = elem; elem->next = elem; } else { elem->prev = list->last; elem->next = list->first; //list->last->next = elem; //list->first->prev = elem; struct list_element *list_last_element = list->last; list_last_element->next = elem; struct list_element *list_first_element = list->first; list_first_element->prev = elem; list->last = elem; } return; }
// Instead of allocating the list directly, use a helper function void list_push(struct list_t *lst, void *comp) { struct list_elem_t *e = list_new_elem(comp, lst->head); lst->head = e; }