summaryrefslogtreecommitdiff
path: root/algorithms/list.h
blob: d3c8b12509f4793f2c52035ea33ccdfb6cb475f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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);