diff --git a/srcs/lst/ft_lstrm.c b/srcs/lst/ft_lstrm.c new file mode 100644 index 0000000..f129f75 --- /dev/null +++ b/srcs/lst/ft_lstrm.c @@ -0,0 +1,24 @@ +#include "libft.h" + +void ft_lstrm(t_list **lst, void *data, int (*cmp)(void *, void *), void (*del)(void *)) +{ + t_list *curr = *lst; + t_list *prev = NULL; + + while (curr) + { + if (cmp(curr->data, data) == 0) + { + if (prev) + prev->next = curr->next; + else + *lst = curr->next; + if (del) + del(curr->data); + free(curr); + return; + } + prev = curr; + curr = curr->next; + } +} \ No newline at end of file