Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* ************************************************************************** */
- /* */
- /* ::: :::::::: */
- /* ft_list_remove_if.c :+: :+: :+: */
- /* +:+ +:+ +:+ */
- /* By: lucuzzuc <marvin@42.fr> +#+ +:+ +#+ */
- /* +#+#+#+#+#+ +#+ */
- /* Created: 2017/03/29 23:08:10 by lucuzzuc #+# #+# */
- /* Updated: 2017/03/30 07:14:33 by lucuzzuc ### ########.fr */
- /* */
- /* ************************************************************************** */
- #include "ft_list.h"
- void ft_list_remove_if(t_list **begin_list, void *data_ref, int (*cmp)())
- {
- t_list *i;
- t_list *tmp;
- t_list *to_del;
- if (!*begin_list || !data_ref || !cmp)
- return ;
- i = *begin_list;
- while ((*cmp)(i->data, data_ref) == 0)
- {
- tmp = i;
- i = i->next;
- free(tmp);
- }
- *begin_list = i;
- while (i->next)
- {
- if ((*cmp)(i->data, data_ref) == 0)
- {
- to_del = i;
- i = i->next;
- free(to_del);
- tmp->next = i;
- }
- else
- {
- tmp = i;
- i = i->next;
- }
- }
- if ((*cmp)(i->data, data_ref) == 0)
- {
- free(tmp->next);
- tmp->next = NULL;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement