aboutsummaryrefslogtreecommitdiff
path: root/src/list.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/list.c')
-rw-r--r--src/list.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/list.c b/src/list.c
new file mode 100644
index 0000000..6a0085f
--- /dev/null
+++ b/src/list.c
@@ -0,0 +1,50 @@
+/*
+ * src/list.c
+ * (c) 2021 Jonas Gunz <himself@jonasgunz.de>
+ * License: MIT
+ */
+
+#include "list.h"
+
+int list_add( list_element_t** _root, void* _data ) {
+ list_element_t** iter = _root;
+ list_element_t* new_element = malloc( sizeof(list_element_t) );
+
+ new_element->data = _data;
+ new_element->next = NULL;
+
+ if( !new_element )
+ return 1;
+
+ while(*iter)
+ iter = & (*iter)->next;
+
+ *iter = new_element;
+
+ return 0;
+}
+
+int list_sort ( list_element_t** _root ) {
+ return -1;
+}
+
+int list_length ( list_element_t* _root ) {
+ return -1;
+}
+
+void* list_pop_front ( list_element_t** _root ) {
+ list_element_t* old = NULL;
+ void* old_data = NULL;
+
+ if( !*_root )
+ return NULL;
+
+ old = *_root;
+ old_data = old->data;
+
+ *_root = (*_root)->next;
+
+ free ( old );
+
+ return old_data;
+}