Afficher le nombre d'occurences dans une liste chainée.
Bonsoir tout le monde, j'ai un tout petit exercice que j'ai du mal a finir. Bon l'énoncée est la suivante : Ecrire une fonction qui affiche le nombre d'occurences de chaque élément d'une liste chainée :
voila le code que je propose :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| void Occurences2(Noeud *T){
int compteur; Noeud *P=T;Noeud *Q;
while(P){
compteur = 0;
Q=T;
while(Q){
if(Q->v == P->v) compteur++;
Q=Q->suiv;
}
printf("%d figure %d fois\n",P->v,compteur);
P=P->suiv;
}
}
} |
la structure est la suivante :
Code:
1 2 3 4
| typedef struct Noeud{
int v; // valeur du noeud
struct Noeud* suiv; // pointeur sur l'élement suivant
}Noeud; |
-> le probleme c'est qu'il ya une redondance au niveau des affichage, par exemple : la liste est 45567664 le resultat de la fonction
est : 4 figure 2 fois
5 figure 2 fois
5 figure 2 fois
6 figure 3 fois
7 figure 1 fois
6 figure 3 fois
6 figure 3 fois
4 figure 2 fois
-> Comment pourais je remedier a ce probleme et merci.