Modifications:
- Update comment on `ajouterLettre` - Update function name and its comment - Fix order in sort function - Add function who add a cell in the right frequency order
This commit is contained in:
parent
73d0ece933
commit
8a368746d6
2 changed files with 16 additions and 6 deletions
16
liste.c
16
liste.c
|
@ -49,7 +49,7 @@ void trierListe(Liste *liste) {
|
|||
if (*liste != NULL) // si la liste n'est pas vide
|
||||
for (Cellule *i = *liste; i->suivant != NULL; i = i->suivant) // premier curseur
|
||||
for(Cellule *j = i->suivant; j != NULL; j = j->suivant) // second curseur
|
||||
if (i->frequence < j->frequence) { // si besoin de faire un échange, on le fais
|
||||
if (i->frequence > j->frequence) { // si besoin de faire un échange, on le fais
|
||||
Cellule temporaire = *j;
|
||||
temporaire.lettre = j->lettre;
|
||||
temporaire.frequence = j->frequence;
|
||||
|
@ -62,6 +62,16 @@ void trierListe(Liste *liste) {
|
|||
}
|
||||
}
|
||||
|
||||
void ajouterEnTete(Liste *liste, Cellule *cellule) {
|
||||
|
||||
void ajouterRangee(Liste *liste, Cellule *nouvelleCellule) {
|
||||
Cellule *curseur;
|
||||
if (*liste == NULL || (*liste)->frequence >= nouvelleCellule->frequence) { // si liste nulle ou alors tête de liste égal en fréquence à notre nouvelle cellule alors on l'ajoute
|
||||
nouvelleCellule->suivant = *liste;
|
||||
*liste = nouvelleCellule;
|
||||
} else {
|
||||
curseur = *liste;
|
||||
while (curseur->suivant != NULL && curseur->suivant->frequence < nouvelleCellule->frequence) // on remonte la liste vers la queue et on s'arrête soit quand on est arrivé au bout soit quand on a trouvé une place pour mettre la nouvelle cellule
|
||||
curseur = curseur->suivant;
|
||||
nouvelleCellule->suivant = curseur->suivant;
|
||||
curseur->suivant = nouvelleCellule;
|
||||
}
|
||||
}
|
||||
|
|
6
liste.h
6
liste.h
|
@ -18,7 +18,7 @@ typedef Cellule *Liste;
|
|||
|
||||
/*
|
||||
Ajoute une lettre (qui sera automatiquement transformé
|
||||
en cellule si elle n'existe pas déjà) dans la liste (en queue
|
||||
en cellule si elle n'existe pas déjà) dans la liste (en tête
|
||||
de liste), avec sa bonne occurence (la met à jour si la lettre
|
||||
existait déjà).
|
||||
*/
|
||||
|
@ -36,7 +36,7 @@ void viderListe(Liste liste);
|
|||
// Trie la liste en fonction des occurences (tri à bulle).
|
||||
void trierListe(Liste *liste);
|
||||
|
||||
// Ajoute une cellule en tête de liste.
|
||||
void ajouterEnTete(Liste *liste, Cellule *cellule);
|
||||
// Ajoute une cellule dans une liste rangée en préservant l'ordre
|
||||
void ajouterRangee(Liste *liste, Cellule *cellule);
|
||||
|
||||
#endif
|
||||
|
|
Reference in a new issue