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/ex16/ft_list.h | 6 +++--- c12/ex16/ft_sorted_list_insert.c | 24 +++++++++++++++++++++++- 2 files changed, 26 insertions(+), 4 deletions(-) (limited to 'c12/ex16') diff --git a/c12/ex16/ft_list.h b/c12/ex16/ft_list.h index 8b736b4..80ec970 100644 --- a/c12/ex16/ft_list.h +++ b/c12/ex16/ft_list.h @@ -6,12 +6,12 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/07/09 14:33:17 by cacharle #+# #+# */ -/* Updated: 2019/07/09 14:42:55 by cacharle ### ########.fr */ +/* Updated: 2019/07/23 15:23:48 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef FT_LIST_H -#define FT_LIST_H +# define FT_LIST_H typedef struct s_list { @@ -19,6 +19,6 @@ typedef struct s_list void *data; } t_list; -t_list *ft_create_elem(void *data); +t_list *ft_create_elem(void *data); #endif diff --git a/c12/ex16/ft_sorted_list_insert.c b/c12/ex16/ft_sorted_list_insert.c index 2ca345a..f99e567 100644 --- a/c12/ex16/ft_sorted_list_insert.c +++ b/c12/ex16/ft_sorted_list_insert.c @@ -6,11 +6,33 @@ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/07/20 08:19:32 by cacharle #+# #+# */ -/* Updated: 2019/07/20 08:23:17 by cacharle ### ########.fr */ +/* Updated: 2019/07/23 15:44:40 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ +#include +#include "ft_list.h" + void ft_sorted_list_insert(t_list **begin_list, void *data, int (*cmp)()) { + t_list *cursor; + t_list *elem; + cursor = *begin_list; + elem = ft_create_elem(data); + if (cursor == NULL) + { + *begin_list = elem; + return ; + } + if ((*cmp)(elem->data, cursor->data) < 0) + { + elem->next = cursor; + *begin_list = elem; + return ; + } + while (cursor->next && (*cmp)(elem->data, cursor->next->data) > 0) + cursor = cursor->next; + elem->next = cursor->next; + cursor->next = elem; } -- cgit