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 : 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);
}
Merci d'avance pour votre aide...