summaryrefslogtreecommitdiff
path: root/algorithms/list.h
diff options
context:
space:
mode:
Diffstat (limited to 'algorithms/list.h')
-rw-r--r--algorithms/list.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/algorithms/list.h b/algorithms/list.h
new file mode 100644
index 0000000..d3c8b12
--- /dev/null
+++ b/algorithms/list.h
@@ -0,0 +1,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);
+