* 파라미터로 받은 t_list 포인터 lst의 content를 del()함수를 통해 삭제하고 free함수를 통해 lst를 할당 해제하는 함수
연결 리스트는 배열과 같은 선형 자료구조
로, 하단의 사진과 같이 노드들이 메모리 상에 연속적으로 저장되어 있지 않고 포인터로 연결
되어 있는 리스트이다.
링크드 리스트의 제일 첫 노드를 가리키는 포인터가 있다.(하단의 사진에서는 head 변수)
각 노드들은 value를 저장하는 data
변수와 다음 노드의 주소값을 저장하는 포인터 변수 next
로 구성된다.
lst가 NULL이면 리스트 자체가 존재하지 않는다는 뜻이다.
*lst는 lst의 첫번째 주소, head를 의미하므로 리스트 내에 노드가 존재하지 않는다는 뜻이다.
인스턴스
가 노드이며, t_list 구조체는 아래와 같다.typedef struct s_list
{
void *content;
struct s_list *next;
} t_list;
lst
이며, lst의 content를 삭제하는 함수 포인터가 del()이다. 즉, lst는 t_list 포인터이며 lst의 content를 제거하기 위해 del함수를 이용해야 한다.void ft_lstdelone(t_list *lst, void (*del)(void *))
t_list *lst : t_list 포인터
void (*del)(void *) : lst의 content 멤버변수를 free하기 위한 함수 포인터
lst가 NULL이면 리스트가 비어 있다는 뜻. 이 때에는 삭제할 리스트가 없는 것이므로 return;
del()함수가 NULL이면 lst의 content를 free하는 기능을 수행하지 못하므로 바로 return;
void ft_lstdelone(t_list *lst, void (*del)(void *))
{
if (lst == NULL || del == NULL)
return ;
del(lst->content);
free(lst);
}
(1) lst가 NULL이면 리스트가 비어 있다는 것, 즉 삭제할 리스트가 없는 것이므로 return, del이 NULL이면 lst의 content를 free할 수 없으므로 return;
(2) del함수를 통해 lst의 content free시킴
(3) lst를 free