From c75df1e7685d2971321a31cc222ac80a66ad26e2 Mon Sep 17 00:00:00 2001 From: Kapliuk Date: Wed, 13 Mar 2024 21:00:16 +0000 Subject: [PATCH] =?UTF-8?q?=D0=92=D0=B8=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D0=B8=20'cv4/.meta/example.c'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cv4/.meta/example.c | 134 -------------------------------------------- 1 file changed, 134 deletions(-) delete mode 100644 cv4/.meta/example.c diff --git a/cv4/.meta/example.c b/cv4/.meta/example.c deleted file mode 100644 index f2b9e79..0000000 --- a/cv4/.meta/example.c +++ /dev/null @@ -1,134 +0,0 @@ -#include "list_ops.h" -#include - -list_t *new_list(size_t length, list_element_t elements[]) -{ - list_t *list = malloc(sizeof(*list) + sizeof(list_element_t) * length); - - if (!list) - return NULL; - - list->length = length; - memcpy(list->elements, elements, sizeof(list_element_t) * length); - - return list; -} - -list_t *append_list(list_t *list1, list_t *list2) -{ - if (!list1 || !list2) - return NULL; - - size_t length = list1->length + list2->length; - list_t *list = malloc(sizeof(*list) + sizeof(list_element_t) * (length)); - - if (!list) - return NULL; - - list->length = length; - if (length) { - memcpy(list->elements, list1->elements, - sizeof(list_element_t) * list1->length); - memcpy(&(list->elements[list1->length]), list2->elements, - sizeof(list_element_t) * list2->length); - } - - return list; -} - -list_t *filter_list(list_t *list, bool (*filter)(list_element_t)) -{ - if (!list || !filter) - return NULL; - - list_t *filtered = - malloc(sizeof(*list) + sizeof(list_element_t) * list->length); - - if (!filtered) - return NULL; - - size_t j = 0; - for (size_t i = 0; i < list->length && j < list->length; ++i) { - if (filter(list->elements[i])) - filtered->elements[j++] = list->elements[i]; - } - filtered->length = j; - - return filtered; -} - -size_t length_list(list_t *list) -{ - if (!list) - return 0; - return list->length; -} - -list_t *map_list(list_t *list, list_element_t (*map)(list_element_t)) -{ - if (!list || !map) - return NULL; - - list_t *mapped = - malloc(sizeof(*list) + sizeof(list_element_t) * list->length); - - if (!mapped) - return NULL; - - mapped->length = list->length; - for (size_t i = 0; i < mapped->length; ++i) - mapped->elements[i] = map(list->elements[i]); - - return mapped; -} - -list_element_t foldl_list(list_t *list, list_element_t initial, - list_element_t (*foldl)(list_element_t, - list_element_t)) -{ - if (!list || !foldl) - return 0; - - for (size_t i = 0; i < list->length; ++i) - initial = foldl(list->elements[i], initial); - - return initial; -} - -list_element_t foldr_list(list_t *list, list_element_t initial, - list_element_t (*foldr)(list_element_t, - list_element_t)) -{ - if (!list || !foldr) - return 0; - - for (size_t i = list->length; i > 0; --i) - initial = foldr(list->elements[i - 1], initial); - - return initial; -} - -list_t *reverse_list(list_t *list) -{ - if (!list) - return NULL; - - list_t *reversed = - malloc(sizeof(*list) + sizeof(list_element_t) * list->length); - - if (!reversed) - return NULL; - - reversed->length = list->length; - for (size_t i = 0, j = reversed->length - 1; i < reversed->length; - i++, j--) { - reversed->elements[i] = list->elements[j]; - } - - return reversed; -} - -void delete_list(list_t *list) -{ - free(list); -}