연결리스트 각 노드의 content에 f함수를 적용시켜 새 연결리스트를 생성하고 반환해주는 함수
t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *))
🔩 parameters
*lst : f를 적용시켜 새 연결리스트를 만들 원본 연결리스트의 head
*f : content에 적용시킬 함수의 포인터
*del : 삭제가 필요할때 사용할 함수의 포인터📬 return
t_list *형 반환
- 연결리스트 각 노드의 content에 f함수를 적용시켜 새 연결리스트를 생성하고 반환
- 새 연결리스트의 저장공간 할당에 실패했을경우 모든 데이터를 지우고 free 해주어야 함
- 하나의 노드를 새로 만들고 ft_lstadd_back을 사용해 마지막 노드에 새 노드를 연결해줌
- 마지막으로 더이상 필요하지않은 newnode를 NULL로 초기화해줌
- lst가 NULL이면 다른 lst함수들은 오류가 발생하도록 했지만 이 함수는 NULL인 함수가 복사되어 반환됨
#include "libft.h"
t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *))
{
t_list *savenode;
t_list *newlist;
t_list *newnode;
savenode = lst;
newlist = NULL;
while (savenode)
{
newnode = ft_lstnew(f(savenode->content));
if (newnode == NULL)
{
ft_lstclear(&newlist, del);
return ((void *)(0));
}
ft_lstadd_back(&newlist, newnode);
savenode = savenode->next;
}
newnode = NULL;
return (newlist);
}