[C] Supprimer premier element liste chainée

karlX -  
JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai une fonction qui est censé supprimer le premier element d'une liste chainée. Elle supprime bien cet element, mais elle m'affiche quand meme un 0.

int removeFirst(Element * * head)
{
    if(*head != NULL)
    {
        /* On libère le premier élément */
        free(*head);
        /* On retourne 0 si tout s'est bien passé */
        return 0;
    }
    else
    {
        return 1;
    }

}


mon main :
int main(int argc, char *argv[])
{
	Element * head ;

 initList(&head, 0) ;

addFirst(&head, 1);

removeFirst(&head);

showList(&head);   

	return 0;
}
A voir également:

3 réponses

Apaachee Messages postés 248 Date d'inscription   Statut Membre Dernière intervention   47
 
Je suis pas expert, mais tu supprimes le premier élément sans rejoindre les 2 bouts de ta liste non ?
0
mahdi
 
vous devez appeler une autre liste p !
p = *head ;
*head=*head-> next ;
free(p);
0
JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
Salut ...

Je pense que c'est normale, vu que la fonction addFirst ajoute un élément en tete de liste ...
Donc normalement, après avoir initialiser et ajouter un élément, ta liste ressemblera a ceci ...
1 -> 0

Le 1 étant le premier élément ...
Donc quand tu supprime le premier élément qui est le 1, il ne restera que le 0.

Apart ça, ta fonction removeFirst est incorrecte, car il faut pas oublier de pointer le head vers le second élément ...
element *delete; //declaration
delete = *head; 
*head = delete->suiv; // suiv etant le champs pointeur de ta structure. 
free(delete);


Mettez en résolu quand c'est résolu -.- ...
0