linked list 설명
배열(Array) & 연결리스트(Linked List)
해당 페이지에 설명해두었음.
ft_lstiter를 구현하기 위해 libft.h파일에
typedef struct s_list { void *content; struct s_list *next; } t_list;이 구조체를 추가해야한다.
void ft_lstiter(t_list *lst, void (*f)(void *))
#include "libft.h"
void ft_lstiter(t_list *lst, void (*f)(void *))
{
t_list *cur;
cur = lst;
while (cur)
{
f(cur->content);
cur = cur->next;
}
}
void to_upper(void *content)
{
char *str = (char *)content;
while (*str)
{
if ('a' <= *str && *str <= 'z')
*str -= ('a' - 'A');
str++;
}
}
void del(void *content)
{
free(content);
}
int main(void)
{
t_list *list = NULL;
t_list *node1, *node2, *node3;
t_list *cur;
node1 = ft_lstnew(strdup("hello"));
node2 = ft_lstnew(strdup("world"));
node3 = ft_lstnew(strdup("libft"));
if (!node1 || !node2 || !node3)
return (1);
ft_lstadd_back(&list, node1);
ft_lstadd_back(&list, node2);
ft_lstadd_back(&list, node3);
ft_lstiter(list, to_upper);
cur = list;
while (cur)
{
printf("%s\n", (char *)cur->content);
cur = cur->next;
}
ft_lstclear(&list, del);
return (0);
}