t_list *ft_lstmap(t_list *lst, t_list *(*f)(t_list *elem)) { t_list *lst2; if (lst == NULL) return (NULL); lst2 = f(lst); lst2->next = ft_lstmap(lst->next, f); return (lst2); }
t_list *ft_lstmap(t_list *lst, t_list *(*f)(t_list *elem)) { t_list *newlst; if (lst) { newlst = f(lst); newlst->next = ft_lstmap(lst->next, f); return (newlst); } return (NULL); }
t_list *ft_lstmap(t_list *lst, t_list *(*f)(t_list *elem)) { t_list *result; result = NULL; if (lst != NULL) { result = ft_lstmap(lst->next, f); ft_lstadd(&result, f(lst)); } return (result); }
t_list *ft_lstmap(t_list *lst, t_list *(*f)(t_list *elem)) { t_list *dest; dest = ft_lstnew(lst->content, lst->content_size); if (!dest) return (NULL); f(lst); if (lst->next) dest->next = ft_lstmap(lst->next, f); return (dest); }
t_list *ft_lstmap(t_list *lst, t_list *(*f)(t_list *elem)) { t_list *newlst; if (lst && *f) { newlst = (*f)(lst); if (newlst && lst->next) newlst->next = ft_lstmap(lst->next, f); return (newlst); } return (0); }
t_list *ft_lstmap(t_list *lst, t_list *(*f)(t_list *elem)) { t_list *l; if (!f || !lst) return (NULL); l = lst; if (lst->next) lst = ft_lstmap(lst->next, f); else lst = NULL; ft_lstadd(&lst, f(ft_lstnew(l->content, l->content_size))); return (lst); }
t_list *ft_lstmap(t_list *lst, t_list *(*f)(t_list *elem)) { t_list *tmp; if (lst) tmp = ft_lstnew(lst->content, lst->content_size); else tmp = NULL; if (tmp) tmp = f(tmp); if (tmp && lst->next) tmp->next = ft_lstmap(lst->next, f); return (tmp); }
t_list *ft_lstmap(t_list *lst, t_list *(*f)(t_list *elem)) { t_list *newlst; while (lst != NULL) { newlst = (t_list *)malloc(sizeof(f(lst))); if (!newlst) return (NULL); newlst = f(lst); newlst->next = ft_lstmap(lst->next, f); return (newlst); } return (NULL); }
static void test1(t_test *test) { t_list *list; t_list *map; bzero((list = malloc(sizeof(t_list))), sizeof(t_list)); bzero((list->next = malloc(sizeof(t_list))), sizeof(t_list)); list->content_size = 21; list->content = strdup("abc"); list->next->content_size = 100; list->next->content = strdup("abc"); map = ft_lstmap(list, lstmap_test_fn); mt_assert(list->content_size == 21); mt_assert(list->next->content_size == 100); mt_assert(!!map && map->content_size == 42); mt_assert(!!map && map->next->content_size == 200); }
t_list *ft_lstmap(t_list *lst, t_list *(*f)(t_list *elem)) { t_list *aux; t_list *aux2; t_list *map; if (lst->next != NULL) { aux2 = ft_lstmap(lst->next, f); if (!aux2) return (NULL); } aux = f(lst); map = ft_lstnew(aux->content, aux->content_size); if (!map) return (NULL); if (lst->next != NULL) map->next = aux2; else map->next = NULL; return (map); }