구조체(연결 리스트) 관련 함수들이다.
Libft 과제의 코드는 이게 마지막이다!!
ft_lstlast: 연결 리스트의 마지막 list 주소를 반환해주는 함수
t_list *ft_lstlast(t_list *lst)
{
if (!lst)
return (lst);
while (lst->next)
lst = lst->next;
return (lst);
}
ft_lstnew: 새 연결 리스트를 생성해주는 함수(새로운 노드를 선언)
t_list *ft_lstnew(void *content)
{
t_list *lst;
if (!(lst = (t_list *)malloc(sizeof(t_list))))
return (NULL);
lst->content = content;
lst->next = NULL;
return (lst);
}
ft_lstmap: 연결 리스트의 모든 content에 함수 f를 적용한 결과를 반환해주는 함수
위에서 구현한 ft_lstnew 함수를 이용해서 새로운 연결 리스트를 생성한 후에, 매개 변수로 받은 연결 리스트의 content에 함수 f를 적용한 결과를 차곡차곡 저장해주면 된다.
t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *))
{
t_list *result;
t_list *t;
if (lst == 0 || f == 0)
return (NULL);
if (!(result = ft_lstnew((*f)(lst->content))))
return (NULL);
t = result;
lst = lst->next;
while (lst)
{
if (!(t->next = ft_lstnew((*f)(lst->content))))
{
ft_lstclear(&result, del);
return (NULL);
}
t = t->next;
lst = lst->next;
}
return (result);
}
ft_lstsize: 연결 리스트의 길이를 반환해주는 함수
int ft_lstsize(t_list *lst)
{
int len;
len = 0;
while (lst)
{
lst = lst->next;
len++;
}
return (len);
}