Liste chaînée ajouter un élément a la fin de la liste

Mark -  
juliencolin54 Messages postés 238 Statut Membre -
Bonjour, j'ai un souci mon programme ne marche pluus votre aide svp


#include <stdio.h>
#include <stdlib.h>
struct element{
int donne;
struct element*suivant;
};
typedef struct element*liste;
liste inser(liste L,int donne)
{

liste nouvel_element;
nouvel_element=(element*) malloc (sizeof(element));
nouvel_element->donne=donne;
nouvel_element->suivant=NULL;
if(L==NULL)
return nouvel_element;
else {
element*courant=L;
while (courant->suivant!=NULL)
{
courant=courant->suivant;
}
courant->suivant=nouvel_element;
return L;
}}
liste supprimer(liste L)
{
if(L!=NULL)
{
element*element_supprimer=L->suivant;
free(L);
return element_supprimer;
}
else
return NULL;
}
void afficher(liste L)
{
element*courant=L;
while(courant!=NULL)
{
printf("%i",courant->donne);
courant=courant->suivant;
}}
int main()
{
int I;
liste ma_liste=NULL;
for(I=1;I<=50;I++)
{
printf("%i\n",2*I);
}
printf("liste apres insertion");
ma_liste=inser(ma_liste,100);
afficher(ma_liste);
printf("la liste apres suppression");
ma_liste=supprimer(ma_liste);
afficher(ma_liste);
return 0;
}

1 réponse

  1. juliencolin54 Messages postés 238 Statut Membre 55
     
    Bonjour,

    Les erreurs de compilation sont pourtant explicites :
    $ cc main.c
    main.c: In function `inser':
    main.c:13:18: erreur: `element' undeclared (first use in this function)
    main.c:13:18: note: each undeclared identifier is reported only once for each function it appears in
    

    Dans ton code le type "element" n'est pas défini (au contraire de struct élément)
    Donc j'ai rajouté 5 fois le mot struct sans chercher à comprendre ton code et voilà :
    #include <stdio.h>
    #include <stdlib.h>
    struct element{
    	int donne;
    	struct element*suivant;
    };
    typedef struct element*liste;
    liste inser(liste L,int donne)
    {
    	liste nouvel_element;
    	nouvel_element=(struct element*) malloc (sizeof(struct element));
    	nouvel_element->donne=donne;
    	nouvel_element->suivant=NULL;
    	if(L==NULL)
    	return nouvel_element;
    	else {
    		struct element*courant=L;
    		while (courant->suivant!=NULL)
    		{
    			courant=courant->suivant;
    		}
    		courant->suivant=nouvel_element;
    		return L;
    	}
    }
    liste supprimer(liste L)
    {
    	if(L!=NULL)
    	{
    		struct element*element_supprimer=L->suivant;
    		free(L);
    		return element_supprimer;
    	}
    	else
    	return NULL;
    }
    
    void afficher(liste L)
    {
    	struct element*courant=L;
    	while(courant!=NULL)
    	{
    		printf("%i",courant->donne);
    		courant=courant->suivant;
    	}
    }
    
    int main()
    {
    	int I;
    	liste ma_liste=NULL;
    	for(I=1;I<=50;I++)
    	{
    		printf("%i\n",2*I);
    	}
    	printf("liste apres insertion");
    	ma_liste=inser(ma_liste,100);
    	afficher(ma_liste);
    	printf("la liste apres suppression");
    	ma_liste=supprimer(ma_liste);
    	afficher(ma_liste);
    	return 0;
    }


    Cdlt,
    0