diff options
Diffstat (limited to 'list.c')
-rw-r--r-- | list.c | 44 |
1 files changed, 44 insertions, 0 deletions
@@ -0,0 +1,44 @@ +#include "list.h" +#include <stdlib.h> + +LIST* list_add(LIST* list, void* item) +{ + + if (list == NULL) + { + list = (LIST*)malloc(sizeof(LIST)); + list->size = 0; + list->list = (void**)malloc(sizeof(0)); + + } + + list->size ++; + void** new_list = (void**)reallocarray(list->list, list->size, sizeof(void*)); + + new_list[list->size-1] = item; + list->list = new_list; + + return list; + +} + +LIST* list_remove(LIST* list, unsigned int pos) +{ + for(unsigned int i = pos; i < list->size - 1; i++) + list->list[i] = list->list[i + 1]; + + list->size--; + + void** new_list = reallocarray(list->list, list->size, sizeof(void*)); + list->list = new_list; + + return list; +} + +void list_free(LIST* list) { + for (unsigned int x = 0; x < list->size; x++) + free(list->list[x]); + + free(list->list); + free(list); +} |