salut a tout le monde .
j'ai un mini-projet a réaliser en C(avec les listes chaines) mais je suis bloqué depuis 2 jours sur une la fonction de suppression d'un element de la liste .

voici le code de ma fonction :
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
el* supprimer(el *liste_chaine,int nombre)
{
    el *tmp = NULL ;
    el *liste_chaine_copie = liste_chaine ;
       if(liste_chaine != NULL && liste_chaine->age == nombre )//notre nombre se trouve en tete de liste
       { 
       liste_chaine = liste_chaine->next ;
       return   liste_chaine;
       }
       else if( liste_chaine != NULL && liste_chaine->age != nombre )//notre nombre se trouve apres la tete de la liste
       {
         while(liste_chaine != NULL)
              {
                 if( liste_chaine->age == nombre )
                 { 
                     tmp = liste_chaine ;
                     tmp = tmp->next ;
                     liste_chaine = tmp ;
                     if(liste_chaine == NULL)//ce if pour terminer le while si on arrive a la fin de la liste
                     goto here;
                 }
                 liste_chaine = liste_chaine->next ;
              }
              here :    
              return   liste_chaine_copie;
       }
}
pour vous donnez une idée sur cette fonction et ben elle marche lors de suppression d'un nombre en tete de liste mais pour le milieu ou le fin elle ne le supprime pas mais au lieu de ça elle rend le nombre suivant = 0 .
exemple voici les elements de ma liste :1-2-3-4-5.
si je donne a la fonction le nombre 3 pour le supprimer j'ai ça :1-2-3-0-5.

alors merci pour vos réponses et a plus.