Bonjour à tous,
je suis en train d'essayer d'utiliser le tuto sur les listes doublement chainées :
lien
et j'ai voulu rajouter une fonction qui me permet de trouver une chaine spécifique dans la pile et de supprimer l'élément de la pile correspondant.
Je ne poste que la fonction en question, pour le reste, je n'ai rien ajouté par rapport au tuto.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int dll_findDelete (dll_s **pile, void *data)
{
    dll_first (pile);
    int i =0;
    int size = dll_sizeof(*pile);
    for (i=0;i<size;i++)
    {
    	if (dll_data (*pile) != NULL)
        {
            if (!strcmp(data,((char *) dll_data (*pile))))
            {
                dll_remove (pile);
                i=size;
            }
        }
        if (i!=size)
        {
            dll_next (pile);
        }
    }
    return ((i!=size)?1:0);
}
Mon problème est que lorsque je recherche une valeur existante, tout fonctionne, la fonction trouve l'élément et le supprime, là ou cela se gatte c'est lorsque je recherche une donnée qui ne se trouve pas dans la pile, en effet, tout semble se passer correctement (en gros ça plante pas et j'ai bien le retour comme quoi elle n'est pas présente) sauf que si je tente d'accéder à nouveau a ma pile, celle ci est vide ...

Merci de m'éclairer sur mon erreur parce que là je vois pas ou je me suis planté (même si je me doute que j'ai du m'emmeler entre les pointeurs et les pointeurs de pointeurs)