From 88f29720d2a09eaef81ad3646169d6bc19be8bfb Mon Sep 17 00:00:00 2001 From: Charles Date: Thu, 6 Feb 2020 00:28:25 +0100 Subject: Added ft_list_size and ft_list_push_front test --- helper_list.c | 48 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 13 deletions(-) (limited to 'helper_list.c') diff --git a/helper_list.c b/helper_list.c index 71e69fa..5ab94be 100644 --- a/helper_list.c +++ b/helper_list.c @@ -1,15 +1,23 @@ #include "libasm_test.h" -static t_list* -create_elem(int data) +int* +create_data_elem(int data) { int *data_ptr = malloc(sizeof(int)); if (data_ptr == NULL) return (NULL); + *data_ptr = data; + return data_ptr; +} + +t_list* +create_elem(int data) +{ t_list *new = malloc(sizeof(t_list)); if (new == NULL) return NULL; - new->data = data_ptr; + if ((new->data = create_data_elem(data)) == NULL) + return (NULL); new->next = NULL; return new; } @@ -39,17 +47,13 @@ list_from_format(char *fmt) { t_list *head = NULL; - while (*fmt) + while (fmt != NULL && *fmt) { - int n = ft_atoi(*fmt); + int n = (int)strtol(fmt, &fmt, 10); t_list *elem = create_elem(n); push_front(&head, elem); - while (isdigit(*fmt)) - fmt++; - if (*fmt) - fmt++; } - return head; + return reverse(head); } t_list* @@ -66,7 +70,7 @@ list_dup(t_list *list) } int -list_cmp(t_list *l1, t_list l2) +list_cmp(t_list *l1, t_list *l2) { if (l1 == NULL && l2 == NULL) return 0; @@ -74,6 +78,10 @@ list_cmp(t_list *l1, t_list l2) return -1; if (l2 == NULL) return 1; + if (l1->data == NULL) + return -1; + if (l2->data == NULL) + return 1; if (*(int*)l1->data != *(int*)l2->data) return *(int*)l1->data - *(int*)l2->data; return list_cmp(l1->next, l2->next); @@ -83,6 +91,20 @@ void list_print(t_list *list) { while (list != NULL) - printf("[%d] -> ", *(int*)list->data); - printf("(null)\n"); + { + printf("[%p] -> ", (int*)list->data); + list = list->next; + } + printf("(null)"); +} + +void +list_destroy(t_list *list) +{ + if (list == NULL) + return ; + list_destroy(list->next); + if (list->data != NULL) + free(list->data); + free(list); } -- cgit