26 lines
No EOL
540 B
C
26 lines
No EOL
540 B
C
#if USE_SLIST
|
|
#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;
|
|
}
|
|
}
|
|
#endif |