728x90
반응형

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

연결 리스트의 형식은 아래와 같다. 

typedef	struct		s_list
{
	void			*content;
	struct s_list	*next;
}					t_list;

 

ft_lstadd_back: 연결 리스트의 맨 뒤에 새로운 요소를 추가해주는 함수

void	ft_lstadd_back(t_list **lst, t_list *new)
{
	t_list	*lst2;

	lst2 = *lst;
	if (!(*lst))
		*lst = new;
	else
	{
		while (lst2->next)
			lst2 = lst2->next;
		lst2->next = new;
	}
}

 

ft_lstadd_front: 연결 리스트의 맨 앞에 새로운 요소를 추가해주는 함수

void	ft_lstadd_front(t_list **lst, t_list *new)
{
	new->next = *lst;
	*lst = new;
}

 

ft_lstclear: 연결 리스트를 초기화해주는 함수(삭제, 메모리 해제)

void	ft_lstclear(t_list **lst, void (*del)(void *))
{
	t_list	*lst2;

	lst2 = *lst;
	if (lst || *lst)
	{
		while (*lst)
		{
			*lst = lst2->next;
			del(lst2->content);
			free(lst2);
			lst2 = *lst;
		}
	}
}

 

ft_lstdelone: 연결 리스트의 content를 삭제하고 메모리를 해제해주는 함수

void	ft_lstdelone(t_list *lst, void (*del)(void *))
{
	if (lst)
	{
		del(lst->content);
		free(lst);
	}
}

 

ft_lstiter: 연결 리스트의 모든 content에 함수 f를 적용해주는 함수

void	ft_lstiter(t_list *lst, void (*f)(void *))
{
	while (lst)
	{
		f(lst->content);
		lst = lst->next;
	}
}
728x90
반응형

+ Recent posts