Bonsoir à tous,
J'ai des petits soucis de listes chaînées. Voilà je m'explique. J'ai créé une liste chaînée avec une structure comportant un nom, un prénom, un jour, un mois et une année. Cette première liste est triée par ordre alphabétique.
La deuxième liste est créée après coup pour pouvoir classer les personne par mois de naissance. Mais là je coince. Pouvez-vous me donner un petit coup de pouce ?
Voici les fonctions :
Merci d'avance pour votre aide...
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 void parcoursListe (typeElt *prem){ typeElt * courant; typeElt *listeMois; // pointeur sur le premier élément de la liste typeDonnee personne; initListe(&listeMois); courant = prem; while (courant != NULL) { personne = valElt(courant); insererMois(listeMois, personne); courant = suivantElt (courant); } } int insererMois (typeElt **ptPrem, typeDonnee val){ typeElt *courant, *precedant, *nouveau; int res; int cmp; int trouve; // vrai lorsque l'on trouve où insérer res = 0; cmp = 1; courant = *ptPrem; // se place en tête de liste precedant = NULL; // pas de précédent trouve = FAUX; while (courant != NULL && trouve == FAUX){ cmp = compareMois(val, valElt(courant)); if (cmp < 0){ trouve = VRAI; // on a trouvé où insérer la nouvelle valeur }else if (cmp == 0){ trouve = VRAI; }else{ cmp = 1; // pas de doublon precedant = courant; // on garde le pointeur sur le précédent courant = suivantElt(courant); // on passe au suivant } } nouveau = creerElt(val); if (nouveau != NULL){ insereElt(ptPrem, precedant, nouveau); res = 1; } return (res); }
Partager