728x90
반응형

구조체(연결 리스트) 관련 함수들이다. 

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);
}
728x90
반응형

+ Recent posts