Téléchargement
illégal
Posez votre question Signaler

Les listes chaînées en langage c [Résolu]

scarface15 - Dernière réponse le 24 déc. 2009 à 13:22
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;
}
Lire la suite 

Les listes chaînées en langage c »

14 réponses
Réponse
+1
moins plus
ok je vais voir
Ajouter un commentaire
Réponse
+1
moins plus
non ca marche pas il me fait une boucle infini
Ajouter un commentaire
Réponse
+0
moins plus
Je vais voir et je te dis !!!
scarface15 - 24 déc. 2009 à 12:25
ok merci bcp cheikh35
Ajouter un commentaire
Réponse
+0
moins plus
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....
@+
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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!!)
@+
Ajouter un commentaire
Réponse
+0
moins plus
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+
Ajouter un commentaire
Réponse
+0
moins plus
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;
}
Ajouter un commentaire
Réponse
+0
moins plus
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!!
@+
Ajouter un commentaire
Réponse
+0
moins plus
jai pas eu de réponse de ta part chuka
Ajouter un commentaire
Réponse
+0
moins plus
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;
Ajouter un commentaire
Réponse
+0
moins plus
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!!
@+
Ajouter un commentaire
Réponse
+0
moins plus
merci bcp chuka.......bonne féte a vous ...a+
Ajouter un commentaire
Ce document intitulé « les listes chaînées en langage c » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?