Les listes chaînées en langage c

Résolu
scarface15 -  
scarface15 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
voila jai un probléme avec mon code source en c , je voudrais créer un programme qui a la fois cré une nouvelle liste simplement chaînée,et puis il permet aussi d'ajouter un nouveau element au début de cette liste,alors voila mon code source et s'il vous plait trouvez moi l'erreur parceque l'ors de l'éxecution je ne peut pas saisir mon nouveau au début de la liste .....merci beaucoup


#include <stdio.h>
#include <stdlib.h>
typedef struct Element_Liste
{
char *marque_auto;
struct Element_Liste *suivant;
}Element;

void creation_liste(Element *nouveau_element)
{
char marque;
printf("bonjour,vous etes sur le point de creer une nouvelle liste \n");
printf("cette liste va contenir vos marques automobile de type caractere \n \n");
printf("******faites entrez une marque:******\n");

nouveau_element =malloc (sizeof (Element));
scanf("%c",&marque);
nouveau_element->marque_auto=marque;
nouveau_element->suivant = NULL;
}


int main(int argc, char **argv)
{
Element *nouveau_element;
Element *element;
char marque_a_ajouter;
creation_liste(nouveau_element);
printf("vous etes sur le point d'ajouter un nouveau element dans votre liste de marques automobile \n");
printf("veuillez saisir la nouvelle marque a ajouter dans votre liste \n");
printf("******faites entrez une nouvelle marque:******\n");

element =malloc (sizeof (Element));
scanf("%c",&marque_a_ajouter);
element->marque_auto = marque_a_ajouter;
element->suivant = nouveau_element;

printf("merci,au revoir \n");

return 0;
}
A voir également:

13 réponses

scarface15 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   3
 
non ca marche pas il me fait une boucle infini
2
scarface15 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   3
 
ok je vais voir
1
cheikh35 Messages postés 145 Date d'inscription   Statut Membre Dernière intervention   15
 
Je vais voir et je te dis !!!
0
scarface15
 
ok merci bcp cheikh35
0
chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
Salt,
rajoute cela:
void creation_liste(Element *nouveau_element)
{
char marque;
printf("bonjour,vous etes sur le point de creer une nouvelle liste \n");
printf("cette liste va contenir vos marques automobile de type caractere \n \n");
printf("******faites entrez une marque:******\n");

nouveau_element =malloc (sizeof (Element));
scanf("%c",&marque);
fflush(stdin);//<- vide le buffer d'entrée
nouveau_element->marque_auto=marque;
nouveau_element->suivant = NULL;
}
Ca devrait marcher....
@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
scarface15 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   3
 
oh merci beaucoup chuka pour ta réponse ca marche très bien,,,,,dis moi peut tu m'expliquer cette ligne que tu a ajouter est-ce-que c'est une fonction qui travaille un peut free ou pas .......merci beaucoup
0
chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
Salut,
ben en quelque sorte oui, c'est un peu comme free.. Ca réinisialise le buffer d'entrée..donc supprime tous les caracteres de celui ci (et certainement il y avait un caractere du type \n qui y restait!!)
@+
0
scarface15 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   3
 
ah d'accord......et j'ai une autre question sur l'affichage de ma liste finale que dois je ajouter pour cela......merci pour ton aide......a+
0
scarface15 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   3
 
chuka voila ce que j'ai ajouter mai lors de l'affichage ca ne marche pas


#include <stdio.h>
#include <stdlib.h>
typedef struct Element_Liste
{
char *marque_auto;
struct Element_Liste *suivant;
}Element;

void creation_liste(Element *nouveau_element)
{
char marque;
printf("bonjour,vous etes sur le point de creer une nouvelle liste \n");
printf("cette liste va contenir vos marques automobile de type caractere \n \n");
printf("******faites entrez une marque:******\n");

nouveau_element =malloc (sizeof (Element));
scanf("%c",&marque);
fflush(stdin);//<- vide le buffer d'entrée
nouveau_element->marque_auto=marque;
nouveau_element->suivant = NULL;
}


int main(int argc, char **argv)
{
Element *nouveau_element;
Element *element;
char marque_a_ajouter;
creation_liste(nouveau_element);
printf("vous etes sur le point d'ajouter un nouveau element dans votre liste de marques automobile \n \n");
printf("veuillez saisir la nouvelle marque a ajouter dans votre liste \n \n");
printf("******faites entrez une nouvelle marque:******\n");

element =malloc (sizeof (Element));
scanf("%c",&marque_a_ajouter);
element->marque_auto = marque_a_ajouter;
element->suivant = nouveau_element;

while (nouveau_element != NULL)
{
printf("%c\n", nouveau_element->marque_auto);
nouveau_element=nouveau_element->suivant;
}
printf("merci,au revoir \n \n");

return 0;
}
0
chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
une piste du style:
int main(int argc, char **argv)
{
Element *nouveau_element=malloc (sizeof (Element));;
Element *element;
Element *courant;
char marque_a_ajouter;
creation_liste(nouveau_element);
printf("vous etes sur le point d'ajouter un nouveau element dans votre liste de marques automobile \n");
printf("veuillez saisir la nouvelle marque a ajouter dans votre liste \n");
printf("******faites entrez une nouvelle marque:******\n");
scanf("%c",&marque_a_ajouter);
element =(Element*)malloc (sizeof (Element));
element->marque_auto = marque_a_ajouter;
element->suivant = nouveau_element;
courant=element;
do
{
printf("%c\n",courant->marque_auto);
courant=courant->suivant;
}
while((courant!=NULL));
printf("merci,au revoir \n");

return 0;
}
J'espere ca pourra t'aider!!
@+
0
scarface15 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   3
 
jai pas eu de réponse de ta part chuka
0
chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
Element *courant;
courant=element;
do
{
printf("%c\n",courant->marque_auto);
courant=courant->suivant;
}
while((courant!=NULL));
par contre je pense que dans ta struct, marque_auto est un char et non un char*
typedef struct Element_Liste
{
char marque_auto;
struct Element_Liste *suivant;
}Element;
0
chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
Sinon, si tu veut une chaine de caractere pour la marque:
#include <stdio.h>
#include <stdlib.h>
typedef struct Element_Liste
{
char* marque_auto;
struct Element_Liste *suivant;
}Element;

void creation_liste(Element *nouveau_element)
{
char* marque=(char*)malloc(20*sizeof(char));
printf("bonjour,vous etes sur le point de creer une nouvelle liste \n");
printf("cette liste va contenir vos marques automobile de type caractere \n \n");
printf("******faites entrez une marque:******\n");
scanf("%s",marque);
fflush(stdin);
nouveau_element->marque_auto=marque;
nouveau_element->suivant = NULL;
}


int main(int argc, char **argv)
{
Element *nouveau_element=malloc (sizeof (Element));;
Element *element;
Element *courant;
char* marque_a_ajouter=(char*)malloc(20*sizeof(char));
creation_liste(nouveau_element);
printf("vous etes sur le point d'ajouter un nouveau element dans votre liste de marques automobile \n");
printf("veuillez saisir la nouvelle marque a ajouter dans votre liste \n");
printf("******faites entrez une nouvelle marque:******\n");
scanf("%s",marque_a_ajouter);
element =(Element*)malloc (sizeof (Element));
element->marque_auto = marque_a_ajouter;
element->suivant = nouveau_element;
courant=element;
do
{
printf("%s\n",courant->marque_auto);
courant=courant->suivant;
}
while((courant!=NULL));
printf("merci,au revoir \n");

return 0;
}
Bonne fete de fin d'année!!
@+
0
scarface15 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   3
 
merci bcp chuka.......bonne féte a vous ...a+
0