libft/srcs/slist/ft_slist_rm.c
2025-05-31 20:17:01 +02:00

24 lines
No EOL
519 B
C

#include "libft.h"
void ft_slist_rm(t_slist **lst, void *data, int (*cmp)(void *, void *), void (*del)(void *))
{
t_slist *curr = *lst;
t_slist *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;
}
}