diff options
| author | Dominik Kaiser | 2024-03-11 13:26:26 +0100 |
|---|---|---|
| committer | Dominik Kaiser | 2024-03-11 13:26:26 +0100 |
| commit | b23760c78e2d087d84311925f2c014aa7c4c1635 (patch) | |
| tree | 3f943793057312ba6995978760d5e78253c1656b | |
| parent | bd89cee6a4fa8ca6c212632a48d1647e44a9e46c (diff) | |
| download | libft-b23760c78e2d087d84311925f2c014aa7c4c1635.tar.gz libft-b23760c78e2d087d84311925f2c014aa7c4c1635.zip | |
lstmap
| -rw-r--r-- | ft_lstclear_bonus.c | 2 | ||||
| -rw-r--r-- | ft_lstmap_bonus.c | 29 | ||||
| -rw-r--r-- | ft_lstnew_bonus.c | 4 | ||||
| -rw-r--r-- | libft.h | 2 |
4 files changed, 22 insertions, 15 deletions
diff --git a/ft_lstclear_bonus.c b/ft_lstclear_bonus.c index 9af095e..f661fc9 100644 --- a/ft_lstclear_bonus.c +++ b/ft_lstclear_bonus.c @@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/10 16:26:23 by dkaiser #+# #+# */ -/* Updated: 2024/03/10 16:35:46 by dkaiser ### ########.fr */ +/* Updated: 2024/03/11 12:48:24 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/ft_lstmap_bonus.c b/ft_lstmap_bonus.c index 91eabfc..1e4b867 100644 --- a/ft_lstmap_bonus.c +++ b/ft_lstmap_bonus.c @@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/10 16:45:21 by dkaiser #+# #+# */ -/* Updated: 2024/03/10 19:03:00 by dkaiser ### ########.fr */ +/* Updated: 2024/03/11 13:25:08 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,29 +15,36 @@ t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) { t_list *result; - t_list *new; + t_list *cur_new; + void *content; if (!lst || !f || !del) return (NULL); - new = ft_lstnew(f(lst->content)); - if (!new) + content = f(lst->content); + cur_new = ft_lstnew(content); + if (!cur_new) { - free(new); + del(content); return (NULL); } - result = new; + result = cur_new; + if (!lst->next) + return (result); lst = lst->next; while (lst) { - new->next = ft_lstnew(f(lst->content)); - if (!new->next) + content = f(lst->content); + cur_new->next = ft_lstnew(content); + if (!cur_new->next) { - ft_lstclear(&new, del); + del(content); + ft_lstclear(&result, del); return (NULL); } - new = new->next; + if (!lst->next) + return (result); lst = lst->next; + cur_new = cur_new->next; } - // new->next = NULL; return (result); } diff --git a/ft_lstnew_bonus.c b/ft_lstnew_bonus.c index a8f43ce..eeb6030 100644 --- a/ft_lstnew_bonus.c +++ b/ft_lstnew_bonus.c @@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/10 14:57:39 by dkaiser #+# #+# */ -/* Updated: 2024/03/10 15:40:57 by dkaiser ### ########.fr */ +/* Updated: 2024/03/11 12:52:00 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,7 @@ t_list *ft_lstnew(void *content) result = malloc(sizeof(t_list)); if (!result) - return (0); + return (NULL); result->content = content; result->next = NULL; return (result); @@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/03/10 16:37:54 by dkaiser #+# #+# */ -/* Updated: 2024/03/10 17:17:50 by dkaiser ### ########.fr */ +/* Updated: 2024/03/11 13:11:23 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ |
