Advertisement
Guest User

Untitled

a guest
Mar 30th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.48 KB | None | 0 0
  1. /* ************************************************************************** */
  2. /*                                                                            */
  3. /*                                                        :::      ::::::::   */
  4. /*   ft_list_remove_if.c                                :+:      :+:    :+:   */
  5. /*                                                    +:+ +:+         +:+     */
  6. /*   By: lucuzzuc <marvin@42.fr>                    +#+  +:+       +#+        */
  7. /*                                                +#+#+#+#+#+   +#+           */
  8. /*   Created: 2017/03/29 23:08:10 by lucuzzuc          #+#    #+#             */
  9. /*   Updated: 2017/03/30 07:14:33 by lucuzzuc         ###   ########.fr       */
  10. /*                                                                            */
  11. /* ************************************************************************** */
  12.  
  13. #include "ft_list.h"
  14.  
  15. void    ft_list_remove_if(t_list **begin_list, void *data_ref, int (*cmp)())
  16. {
  17.     t_list  *i;
  18.     t_list  *tmp;
  19.     t_list  *to_del;
  20.  
  21.     if (!*begin_list || !data_ref || !cmp)
  22.         return ;
  23.     i = *begin_list;
  24.     while ((*cmp)(i->data, data_ref) == 0)
  25.     {
  26.         tmp = i;
  27.         i = i->next;
  28.         free(tmp);
  29.     }
  30.     *begin_list = i;
  31.     while (i->next)
  32.     {
  33.         if ((*cmp)(i->data, data_ref) == 0)
  34.         {
  35.             to_del = i;
  36.             i = i->next;
  37.             free(to_del);
  38.             tmp->next = i;
  39.         }
  40.         else
  41.         {
  42.             tmp = i;
  43.             i = i->next;
  44.         }
  45.     }
  46.     if ((*cmp)(i->data, data_ref) == 0)
  47.     {
  48.         free(tmp->next);
  49.         tmp->next = NULL;
  50.     }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement