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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.