ft_lstdelone

jaehlee·2025년 4월 27일

Libft

목록 보기
22/26

linked list 설명

배열(Array) & 연결리스트(Linked List)
해당 페이지에 설명해두었음.

ft_lstdelone를 구현하기 위해 libft.h파일에

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

이 구조체를 추가해야한다.

1. ft_lstdelone란?


하나의 리스트 노드를 제거하면서 그 노드가 가리키는 content도 삭제하는 함수이다.

2. 함수 프로토타입

void ft_lstdelone(t_list *lst, void (*del)(void*));

3. 함수구현

#include "libft.h"

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

작동방식

  1. del(lst->content)로 lst의 content를 해제한다.
  2. free(lst)를 호출해서 노드도 메모리에서 제거한다.

사용예시

void del(void *content)
{
	free(content);
}

int main(void)
{
	t_list *node;
	char *str = malloc(20);
	if (!str)
		return (1);

	// 문자열을 복사해서 저장
	sprintf(str, "Hello, World!");

	node = ft_lstnew((void *)str);

	printf("Before delete: %s\n", (char *)node->content);

	ft_lstdelone(node, del); // content도 free, 노드도 free

	// node 사용 불가! (free 되었기 때문)

	return (0);
}
profile
공부하는 개발자

0개의 댓글