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:
Mylloon 2021-12-19 20:29:21 +01:00
parent 73d0ece933
commit 8a368746d6
2 changed files with 16 additions and 6 deletions

16
liste.c
View file

@ -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;
}
}

View file

@ -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