t_list **lst
는 t_list 포인터(lst)의 주소를 가리키는 포인터다.t_list **lst
변수가 담고있는 값은 t_list *
의 주소t_list **lst
가 담고 있는 t_list *
의 주소는 어떤 리스트(lst)의 첫번째 주소*lst == NULL
과 lst == NULL
의 차이*lst는 lst의 첫번째 주소, 즉 헤드의 주소를 의미한다. 헤드가 비었다는 건,
*lst는 빈 리스트 라는 뜻!
lst == NULL은 리스트 자체가 존재하지 않는다 뜻!
void ft_lstadd_back(t_list **lst, t_list *new_node)
{
t_list *curr;
if (lst == 0 || new_node == 0)
return ;
if (*lst == 0)
{
*lst = new_node;
return ;
}
curr = *lst;
while (curr->next)
curr = curr->next;
curr->next = new_node;
}
리스트의 제일 마지막에 새 노드를 추가하는 함수. 리스트가 비어있는 지 확인을 먼저 해줘야 한다.
*lst
== 0 이면 리스트가 비었으니 *lst
, 즉 head의 주소에 새 노드의 주소를 넣어주면 된다.