S'il-vous-plaît, si je veux lire une liste des valeurs et les trier au fur et à mesure dans une liste chainée, comment faire ?
Jai fait une fonction, mais ça n'a pas marché![]()
S'il-vous-plaît, si je veux lire une liste des valeurs et les trier au fur et à mesure dans une liste chainée, comment faire ?
Jai fait une fonction, mais ça n'a pas marché![]()
Montre-nous ton code (en utilisant les balises [code] et [/code]).
voila
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 struct noeud ; typedef noeud* Liste; struct Personne { char nom[25]; int age ; }; struct noeud { Personne liste_pers; Liste suiv ; };
la fct
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Liste lirePers() { Liste pers = NULL ; noeud* nouv ,*dernier; Personne p; int sortir = 0 ; while(scanf("%s\n%d",p.nom,&(p.age)), strcmp(p.nom,"fin")!=0) { nouv = new noeud ; strcpy (nouv->liste_pers.nom,p.nom); nouv->liste_pers.age = p.age ; nouv->suiv = pers; pers=nouv ; } dernier=pers; while(dernier->suiv != NULL) dernier = dernier->suiv ; dernier->suiv= pers ; return pers ; }
nouv = new noeud ; ça existe en C?
Sinon utiliser pers pour une liste... ça embrouille plus qu'autre chose, pourquoi ne pas l'avoir nommé listePersonne ?
Sinon, tu mélange la saisie et l'insertion. Il vaut mieux faire une fonction insertionTriee qui prenne en paramètre une liste et une personne.
Ensuite, il va falloir que tu parcours ta liste jusqu'à trouver la position où il faut insérer l'élément. Tu n'as ensuite plus qu'à faire une insertionEnTête().
Après il ne faut pas oublier de retourner la liste et le tour est joué.
Partager