#include <stdio.h>
typedef struct s_list
{
struct s_list *next;
void *data;
} t_list;
#include <stdio.h> // pour printf
//#include "ft_list.h"
#include <stdlib.h> // ne pas oublier, est nécessaire
#include <string.h> // pour strcmp
void ft_list_remove_if(t_list **begin_list, void *data_ref, int (*cmp)())
{
t_list **current = begin_list; // ptr su begin_list, sotck l adresse de begin_list
t_list *tmp; // un pointeur vers un nœud de la liste.
while (*current)
{
if ((*cmp)((*current)->data, data_ref) == 0)
{
tmp = (*current);
*current = (*current)->next;
free(tmp);
}
else
current = &(*current)->next;
}
}
// transformer strcmp pour que prend en parametre void! il faut caster
int my_cmp(void *a, void *b)
{
return strcmp((char *)a, (char *)b);
}
// sert a créer un nouveau noeud contenant une donnée et l'initialiser pour pouvoir l'ajouter à une liste chainée
void *creat_elem(void *value)
{
t_list *new_el;
new_el = malloc(sizeof(t_list));
// ne pas oublier de vérifier l allocation de mémoire
if (new_el == NULL)
return NULL;
// ajouter la value
new_el->data = value;
// faire que pointe vers null
new_el->next = NULL;
// retourner l'adresse du new_el, cela permet d'utiliser ce noeud dans une liste chainée en l'affectant a un ptr (dans main next )
return (new_el);
}
void print_list(t_list *head)
{
while (head) // head ptr sur le premier élément de la liste
{
printf("value du noeud: %s \n",(char *)head->data);
head = head->next;
}
}
int main()
{
t_list *node; // déclare un ptr node de t_list *
node = creat_elem("banane"); // ici on fait pointer node ver le premier noeud contnat "banane"
node->next = creat_elem("bite"); // ajoute les noeud suivant en modifiant le champs next, cela crée une liste chainee ou chaque noeud poute vers le suivant
node->next->next = creat_elem("citron");
printf("La liste avant suppression: \n");
print_list(node);
ft_list_remove_if(&node, "bite", my_cmp); // il faut donner &node pour pouvoir modifier et supprimer les nodes, "valeur de comparaison", ma fonction de comparaison de type int cmp(void *)
printf("La liste après suppression: \n");
print_list(node);
return (0);
}
To embed this project on your website, copy the following code and paste it into your website's HTML: