Problème de listes chaînées
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 :
Code:
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);
} |
Merci d'avance pour votre aide...