From 32cfb7a2f9796b4b1edbaf875bf0f81900c68e18 Mon Sep 17 00:00:00 2001 From: aindros Date: Thu, 9 Jan 2020 01:58:41 +0100 Subject: added List_AddAll and List_Remove --- src/list.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/list.c') diff --git a/src/list.c b/src/list.c index 3edc82b..b48d399 100644 --- a/src/list.c +++ b/src/list.c @@ -34,6 +34,33 @@ void List_Add(List* list, list->size ++; } +void List_AddAll(List *dest, List *other) +{ + dest->last->next = other->first; + dest->size += other->size; +} + +void List_Remove(List *list, List_Item *item) +{ + List_Item *curr = list->first->next; + List_Item *prev = list->first; + + if (list->first == item) { + free(list->first); + list->first = curr; + } else { + while (curr != NULL) { + if (curr == item) { + prev->next = curr->next; + free(curr); + return; + } + prev = curr; + curr = curr->next; + } + } +} + Iterator List_Iterator(List* list) { struct iterator_t *iterator = malloc(sizeof(struct iterator_t)); -- cgit v1.2.3