typedef struct Node_s { struct Node_s *next; char *cont; } Node; typedef struct List_s { Node *first; Node *last; } List; List *list_new(void); int list_append(List *l, char *item); int list_len(List *l); void list_free(List *l); char *list_get_at(List *l, int index); int list_delete_at(List *l, int index); int list_insert_before(List *l, char *item, int index); void list_sort(List *l); int list_quicksort(List *l); List *list_split(char *str, char *splitstr); char *list_join(List *l, char *joiner); typedef struct Iterator_s { List *list; Node *current; } Iterator; Iterator *list_iterator_new(List *l); void list_iterator_free(Iterator *i); char *list_iterator_next(Iterator *it);