diff options
Diffstat (limited to 'c12/ex06')
| -rw-r--r-- | c12/ex06/ft_list.h | 24 | ||||
| -rw-r--r-- | c12/ex06/ft_list_clear.c | 28 |
2 files changed, 52 insertions, 0 deletions
diff --git a/c12/ex06/ft_list.h b/c12/ex06/ft_list.h new file mode 100644 index 0000000..8b736b4 --- /dev/null +++ b/c12/ex06/ft_list.h @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_list.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/07/09 14:33:17 by cacharle #+# #+# */ +/* Updated: 2019/07/09 14:42:55 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef FT_LIST_H +#define FT_LIST_H + +typedef struct s_list +{ + struct s_list *next; + void *data; +} t_list; + +t_list *ft_create_elem(void *data); + +#endif diff --git a/c12/ex06/ft_list_clear.c b/c12/ex06/ft_list_clear.c new file mode 100644 index 0000000..9a7cf5d --- /dev/null +++ b/c12/ex06/ft_list_clear.c @@ -0,0 +1,28 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_list_clear.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <charles.cabergs@gmail.com> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/07/09 17:53:02 by cacharle #+# #+# */ +/* Updated: 2019/07/09 18:02:09 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "ft_list.h" + +void ft_list_clear(t_list *begin_list, void (*free_fct)(void *)) +{ + t_list tmp; + + if (!begin_list) + return ; + while (begin_list->next) + { + free_fct(begin_list->data); + tmp = begin_list->next; + free(begin_list); + begin_list = tmp; + } +} |
