* 인자로 받은 변수 content를 새 노드의 content로 써서 새 노드를 만드는 함수
* 새 노드의 content는 인자로 받은 content를, 새 노드의 next에는 NULL을 채워 새로운 노드를 만든다
연결 리스트는 배열과 같은 선형 자료구조
로, 하단의 사진과 같이 노드들이 메모리 상에 연속적으로 저장되어 있지 않고 포인터로 연결
되어 있는 리스트이다.
링크드 리스트의 제일 첫 노드를 가리키는 포인터가 있다.(하단의 사진에서는 head 변수)
각 노드들은 value를 저장하는 data
변수와 다음 노드의 주소값을 저장하는 포인터 변수 next
로 구성된다.
lst가 NULL이면 리스트 자체가 존재하지 않는다는 뜻이다.
*lst는 lst의 첫번째 주소, head를 의미하므로 리스트 내에 노드가 존재하지 않는다는 뜻이다.
인스턴스
가 노드이며, t_list 구조체는 아래와 같다.typedef struct s_list
{
void *content;
struct s_list *next;
} t_list;
t_list *ft_lstnew(void *content)
void *content : 새 노드의 content로 쓰일 인자인 보이드형 포인터 content.
다양한 자료형을 인자로 받아들일 수 있도록 보이드형 보인터를 이용했다.
만든 새 노드의 주소를 t_list형 포인터 new에 저장하는데, 만약 malloc으로 t_list의 크기만큼 메모리를 할당하지 못했을 때는 NULL을 반환한다.
새 노드의 next에는 NULL
, content에는 인자로 받은 content
를 넣어준다.
#include "libft.h"
t_list *ft_lstnew(void *content)
{
t_list *new;
if (!(new = (t_list*)malloc(sizeof(t_list))))//할당 실패 시 NULL 리턴
{
return (NULL);
}
new->next = NULL;
new->content = content;
return (new);
}
(1) 새 노드를 저장할 t_list 포인터 변수 new를 선언.
(2) malloc으로 new에 t_list의 크기만큼 메모리를 할당해주되, 할당 실패 시 NULL을 반환한다.
(3) 할당 뒤, new의 next에는 NULL을, content에는 인자로 받은 content를 대입.
(4) new 리턴.