diff --git a/srcs/bonus/.ft_lstdelone.c.swp b/srcs/bonus/.ft_lstdelone.c.swp new file mode 100644 index 0000000..d9d49e0 Binary files /dev/null and b/srcs/bonus/.ft_lstdelone.c.swp differ diff --git a/srcs/bonus/a.out b/srcs/bonus/a.out index 6a73564..18d0f88 100755 Binary files a/srcs/bonus/a.out and b/srcs/bonus/a.out differ diff --git a/srcs/bonus/ft_lstadd_back.c b/srcs/bonus/ft_lstadd_back.c index 99117c2..2c7eec9 100644 --- a/srcs/bonus/ft_lstadd_back.c +++ b/srcs/bonus/ft_lstadd_back.c @@ -92,7 +92,7 @@ void ft_lstadd_back(t_list **alst, t_list *new) tmp = tmp->next; tmp->next = new; } - new->content = NULL; + new->next = NULL; } } diff --git a/srcs/bonus/ft_lstdelone.c b/srcs/bonus/ft_lstdelone.c new file mode 100644 index 0000000..a86635b --- /dev/null +++ b/srcs/bonus/ft_lstdelone.c @@ -0,0 +1,99 @@ + + #include + + typedef struct s_list + { + void *content; + struct s_list *next; + } t_list; + + void *ft_memcpy(void *dst, const void *src, size_t n) + { + size_t i; + char *ptr; + char *ptr2; + + ptr = (char *)dst; + ptr2 = (char *)src; + i = -1; + while (++i < n) + ptr[i] = ptr2[i]; + return (dst); + } + + t_list *ft_lstnew(void *content) + { + t_list *lst; + + if (!(lst = (t_list *)malloc(sizeof(*lst)))) + return (NULL); + if (!content) + lst->content = NULL; + else + { + if (!(lst->content = malloc(sizeof(content)))) + return (NULL); + ft_memcpy(lst->content, content, sizeof(content)); + } + lst->next = NULL; + return (lst); + } + + void ft_lstadd_back(t_list **alst, t_list *new) + { + t_list *tmp; + + if (alst) + { + tmp = *alst; + if (!tmp) + *alst = new; + else + { + while (tmp->next) + tmp = tmp->next; + tmp->next = new; + } + new->next = NULL; + } + } + + void ft_lstdelone(t_list *lst, void (*del)(void *)); + + int main(void) + { + char tresor; + char matos; + char friends; + t_list *toto; + t_list *tmp; + + tresor = 'a'; + matos = 'b'; + friends = 'c'; + toto = ft_lstnew(&tresor); + printf("toto->data :%c\n",*(char*)(toto->content)); + tmp = ft_lstnew(&matos); + ft_lstadd_back(&toto, tmp); + printf("----------------------\n"); + printf("toto->data :%c\n",*(char*)(toto->content)); + printf("toto->nxt->data :%c\n",*(char*)(toto->next->content)); + tmp = ft_lstnew(&friends); + ft_lstadd_back(&toto, tmp); + printf("----------------------\n"); + printf("toto->data :%c\n",*(char*)(toto->content)); + printf("toto->nxt->data :%c\n",*(char*)(toto->next->content)); + printf("toto->nxt->nxt->data:%c\n",*(char*)(toto->next->next->content)); + printf("toto->nxt->nxt->nxt :%s\n",(char*)(toto->next->next->next)); + return (0); + } + + +//#include "libft.h" + +void ft_lstdelone(t_list *lst, void (*del)(void *)) +{ + del(lst->content); + free(lst); + lst = NULL; +} diff --git a/srcs/bonus/lstdelone.c b/srcs/bonus/lstdelone.c deleted file mode 100644 index e2b85c2..0000000 --- a/srcs/bonus/lstdelone.c +++ /dev/null @@ -1,20 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_lstdelone.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: hulamy +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2018/11/14 21:10:59 by hulamy #+# #+# */ -/* Updated: 2018/11/16 13:59:22 by hulamy ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#include "libft.h" - -void ft_lstdelone(t_list **alst, void (*del)(void *, size_t)) -{ - del((*alst)->content, (*alst)->content_size); - free(*alst); - *alst = NULL; -}