diff options
| author | Cabergs Charles <cacharle@e-r6-p7.s19.be> | 2019-07-24 08:02:55 +0200 |
|---|---|---|
| committer | Cabergs Charles <cacharle@e-r6-p7.s19.be> | 2019-07-24 08:02:55 +0200 |
| commit | e7acdc820fefa41ae00a7c776388e3d17250a2e9 (patch) | |
| tree | 5604e51c0008088f25b2f5dfb9143a852dd079dd /c12/ex15/ft_list_reverse_fun.c | |
| parent | 454d82f30e354e2629563822bac637e5eaa8e4ff (diff) | |
| download | piscine-e7acdc820fefa41ae00a7c776388e3d17250a2e9.tar.gz piscine-e7acdc820fefa41ae00a7c776388e3d17250a2e9.tar.bz2 piscine-e7acdc820fefa41ae00a7c776388e3d17250a2e9.zip | |
c12 passed, c13 start
Diffstat (limited to 'c12/ex15/ft_list_reverse_fun.c')
| -rw-r--r-- | c12/ex15/ft_list_reverse_fun.c | 47 |
1 files changed, 36 insertions, 11 deletions
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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 <stdlib.h> +#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--; + } } |
