Bonjour,

j'ai fait un programme complet pour les listes chainees mais j'ai une fonction de suppression qui ne fonctionne pas. Est ce possible de me dire ce qui ne marche pas dans la fonction supprimer ? la fonction supprimer est à la fin du programme.
le programme peut être compilé avec un compilateur et fonctionne sauf supprimer
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 
 
 
struct sport* supprimer(struct sport *debut)
{
    char ptab[20];
    struct sport *courant;
    struct sport*precedent;
 
    precedent = NULL;
 printf("Entrez le nom a supprimer : ");
 fflush(stdin);
 fgets(ptab,20,stdin);
 courant = debut;
 
    if (debut!=NULL && strcmp(ptab,courant->nom) == 0)/// on supprime la tete
    {
        supprimersousliste(courant->liste);
        debut=courant->next;
        free(courant);
        return debut;
    }
    else{
 
       while(courant!=NULL && strcmp(ptab,courant->nom)!=0)
         {
             precedent = courant;
             courant= courant->next;
         }
 
 
         if(courant!=NULL && strcmp(ptab,courant->nom)==0 )
         {supprimersousliste(courant->liste);
            precedent->next=courant->next;
 
            courant->next=NULL;
             free(courant);
             return(debut);
         }
         else
             {
                printf("le nom n'est pas present");
 
            }
 }
 return debut;
}
 
 
 
struct sport*supprimersousliste(struct joueurs*debut )
{
    struct joueurs *tmpjoueurs;//element a supprimer
    tmpjoueurs=debut;
    while(debut!=NULL){
debut=tmpjoueurs->next;
 
 
        tmpjoueurs->next=NULL;
        free(tmpjoueurs);
    }
return debut;
}

si je supprime les sports ça marche sauf pour celui qui est au début (en première position par ordre alphabétique) car ça ne supprime pas bien mais ç'est surement parce qu'il y a un souci ....