From 5bab06313e71e9827baa426a02bbaf2a00b4e6a0 Mon Sep 17 00:00:00 2001 From: Charles Date: Wed, 24 Jul 2019 08:02:55 +0200 Subject: c12 passed, c13 start --- c12/ex15/ft_list.h | 4 ++-- c12/ex15/ft_list_reverse_fun.c | 47 ++++++++++++++++++++++++++++++++---------- 2 files changed, 38 insertions(+), 13 deletions(-) (limited to 'c12/ex15') diff --git a/c12/ex15/ft_list.h b/c12/ex15/ft_list.h index 5eafe75..3fd2c68 100644 --- a/c12/ex15/ft_list.h +++ b/c12/ex15/ft_list.h @@ -6,12 +6,12 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/07/09 14:33:17 by cacharle #+# #+# */ -/* Updated: 2019/07/19 08:26:12 by cacharle ### ########.fr */ +/* Updated: 2019/07/23 15:22:30 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef FT_LIST_H -#define FT_LIST_H +# define FT_LIST_H typedef struct s_list { diff --git a/c12/ex15/ft_list_reverse_fun.c b/c12/ex15/ft_list_reverse_fun.c index 9ee845e..ffbeea2 100644 --- a/c12/ex15/ft_list_reverse_fun.c +++ b/c12/ex15/ft_list_reverse_fun.c @@ -6,22 +6,47 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/07/19 13:55:34 by cacharle #+# #+# */ -/* Updated: 2019/07/20 08:18:04 by cacharle ### ########.fr */ +/* Updated: 2019/07/23 15:44:23 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ -static t_list *reverse_rec(t_list *begin_list) +#include +#include "ft_list.h" + +static t_list *my_at(t_list *begin_list, int nbr) +{ + while (nbr-- > 0 && begin_list != NULL) + begin_list = begin_list->next; + return (begin_list); +} + +static int my_size(t_list *begin_list) { - if (!begin_list) - return begin_list; - if (!begin_list->next) - return begin_list; - ft_list_reverse_fun(begin_list->next); - begin_list->next->next = begin_list; - begin_list->next = NULL; + int counter; + + counter = 0; + while (begin_list->next) + { + counter++; + begin_list = begin_list->next; + } + return (counter); } -void ft_list_reverse_fun(t_list *begin_list) +void ft_list_reverse_fun(t_list *begin_list) { - begin_list = reverse_rec(begin_list); + void *tmp; + unsigned int j; + unsigned int i; + + j = my_size(begin_list); + i = 0; + while (i < j) + { + tmp = my_at(begin_list, i)->data; + my_at(begin_list, i)->data = my_at(begin_list, j)->data; + my_at(begin_list, j)->data = tmp; + i++; + j--; + } } -- cgit