lib/libft/ft_lstremove_back.c

26 lines
518 B
C

#include "libft.h"
static void delete(t_list **deleted, void (*del)(void*));
void ft_lstremove_back(t_list **lst, void (*del)(void*))
{
if (lst == NULL || del == NULL)
return;
if ((*lst)->next == NULL)
return delete(lst, del);
t_list *cur = *lst;
while (cur->next != NULL && cur->next->next != NULL)
cur = cur->next;
delete(&(cur->next), del);
}
static void delete(t_list **deleted, void (*del)(void*)) {
del(*deleted);
free(*deleted);
*deleted = NULL;
}