* 파라미터로 받은 t_list 포인터 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
이다.void ft_lstlast(t_list *lst)
t_list *lst : t_list 포인터
lst가 NULL이면 리스트가 비어 있다는 뜻. 이 때에는 마지막 노드를 가리킬 수 없으므로 return (NULL);
lst의 next가 존재한다는 뜻은, lst가 마지막 노드가 아니라는 뜻이다. 따라서 lst의 next가 NULL이 아닐 때까지 리스트를 탐색한다.
#include "libft.h"
t_list *ft_lstlast(t_list *lst)
{
if (lst == NULL)
return (NULL);
while (lst->next != NULL)
{
lst = lst->next;
}
return (lst);
}
(1) lst가 NULL이면 리스트가 비어 있는 것이기 때문에 노드를 가리킬 수 없다. 따라서 return (NULL);
(2) lst의 next가 존재한다면 이는 lst가 맨 마지막 노드가 아니라는 뜻이기에 lst->next가 NULL이 아닐 때까지 탐색.
(3) lst의 next가 NULL이면 현재 lst는 맨 마지막 노드. 따라서 return (lst);