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;
}
A voir également:

1 réponse

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