diff options
| author | Thomas Vanbesien <tvanbesi@proton.me> | 2026-02-21 17:33:28 +0100 |
|---|---|---|
| committer | Thomas Vanbesien <tvanbesi@proton.me> | 2026-02-21 17:33:28 +0100 |
| commit | 7a34b3d412f5022d4ce25d84ec7fb4002b1fb5db (patch) | |
| tree | 9546a74914e750e747adb2d9adcd7b67f96adf24 /src/ft_lstmap.c | |
| parent | 9bb8e5cd549eca189ce183f40f771c2a614ea8f6 (diff) | |
| download | Libft-7a34b3d412f5022d4ce25d84ec7fb4002b1fb5db.tar.gz Libft-7a34b3d412f5022d4ce25d84ec7fb4002b1fb5db.zip | |
Implement libft Part 3 (linked lists) with tests
Add t_list struct and 9 linked list functions: ft_lstnew,
ft_lstadd_front, ft_lstsize, ft_lstlast, ft_lstadd_back,
ft_lstdelone, ft_lstclear, ft_lstiter, ft_lstmap.
Diffstat (limited to 'src/ft_lstmap.c')
| -rw-r--r-- | src/ft_lstmap.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/ft_lstmap.c b/src/ft_lstmap.c new file mode 100644 index 0000000..c001a2d --- /dev/null +++ b/src/ft_lstmap.c @@ -0,0 +1,26 @@ +#include "libft.h" +#include <stdlib.h> + +t_list * +ft_lstmap (t_list *lst, void *(*f) (void *), void (*del) (void *)) +{ + t_list *new_list; + t_list *node; + void *content; + + new_list = NULL; + while (lst) + { + content = f (lst->content); + node = ft_lstnew (content); + if (!node) + { + del (content); + ft_lstclear (&new_list, del); + return (NULL); + } + ft_lstadd_back (&new_list, node); + lst = lst->next; + } + return (new_list); +} |
