]> git.dkaiser.de - 42/libft.git/commitdiff
lstmap
authorDominik Kaiser <dkaiser@1-C-9.42heilbronn.de>
Mon, 11 Mar 2024 12:26:26 +0000 (13:26 +0100)
committerDominik Kaiser <dkaiser@1-C-9.42heilbronn.de>
Mon, 11 Mar 2024 12:26:26 +0000 (13:26 +0100)
ft_lstclear_bonus.c
ft_lstmap_bonus.c
ft_lstnew_bonus.c
libft.h

index 9af095ea21fd2a3a7a44e5acaa440ac3f76076fb..f661fc9da2f5f41f8dea13beb208b65f15cbfcc8 100644 (file)
@@ -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       */
 /*                                                                            */
 /* ************************************************************************** */
 
index 91eabfce4a5f8f0d792b28714aa2f991b9f029a5..1e4b867b394740d1dc8e481c0554a3dc15d1ca9c 100644 (file)
@@ -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       */
 /*                                                                            */
 /* ************************************************************************** */
 
 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);
 }
index a8f43ce0a24eac36a10aad6301e7795b6ecec4dc..eeb6030c84ad71d6bc5be46d7f25877426cd3164 100644 (file)
@@ -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);
diff --git a/libft.h b/libft.h
index 1256bdc58c84821f8c2a2c15e48b4abf103c1368..148094fabfa4baa475f4d9931306748e1558c444 100644 (file)
--- a/libft.h
+++ b/libft.h
@@ -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       */
 /*                                                                            */
 /* ************************************************************************** */