void delete_list (list_ref list) { listnode_ref tempnode = 0; assert (is_list (list)); assert (! empty_list (list)); tempnode = list->curr; if (list->curr->next != NULL){ list->curr->prev = tempnode->next; list->curr = tempnode->next; }else{ list->last->prev = tempnode->prev; list->curr = list->last; } free (tempnode); }