From 23ad79e8b41c25bb4992d103d29a17612a52e351 Mon Sep 17 00:00:00 2001 From: Charles Date: Sun, 21 Jul 2019 15:26:32 +0200 Subject: c10 done, c11 on going, rush02 probably finished, bsq start --- c12/ex12/ft_list.h | 22 ++++++++++++++++++++++ c12/ex12/ft_list_remove_if.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 c12/ex12/ft_list.h (limited to 'c12/ex12') diff --git a/c12/ex12/ft_list.h b/c12/ex12/ft_list.h new file mode 100644 index 0000000..0f7f09a --- /dev/null +++ b/c12/ex12/ft_list.h @@ -0,0 +1,22 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_list.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/07/09 14:33:17 by cacharle #+# #+# */ +/* Updated: 2019/07/19 08:26:52 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FT_LIST_H +#define FT_LIST_H + +typedef struct s_list +{ + struct s_list *next; + void *data; +} t_list; + +#endif diff --git a/c12/ex12/ft_list_remove_if.c b/c12/ex12/ft_list_remove_if.c index e69de29..dc7f310 100644 --- a/c12/ex12/ft_list_remove_if.c +++ b/c12/ex12/ft_list_remove_if.c @@ -0,0 +1,30 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_list_remove_if.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/07/19 08:38:28 by cacharle #+# #+# */ +/* Updated: 2019/07/19 08:49:43 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +void ft_list_remove_if(t_list **begin_list, void *data_ref, int (*cmp)(), void (*free_fct)(void *)) +{ + t_list *prev; + t_list *cursor; + + prev = NULL; + cursor = *begin_list; + while (cursor) + { + if ((*cmp)(cursor->data, data_ref)) + { + if (prev) + prev->next = cursor->next; + (*free_fct)(cursor->data); + } + cursor = cursor->next; + } +} -- cgit