Adding the chained list converter to the binary tree (there is a [CWE-401])
This commit is contained in:
parent
6c766d1f92
commit
fc6b1b92ee
1 changed files with 25 additions and 0 deletions
25
arbre.c
25
arbre.c
|
@ -1,7 +1,32 @@
|
||||||
#include "arbre.h"
|
#include "arbre.h"
|
||||||
|
|
||||||
void convertisseurListeEnArbre(Liste *liste) {
|
void convertisseurListeEnArbre(Liste *liste) {
|
||||||
|
Cellule *curseur = *liste;
|
||||||
|
while (curseur != NULL) { // parcours de la liste
|
||||||
|
if (curseur->suivant != NULL) { // on créer un mini-arbre qu'on colle au reste de l'arbre seulement si le suivant existe
|
||||||
|
Cellule *nouvelleCellule;
|
||||||
|
if ((nouvelleCellule = (Cellule*)malloc(sizeof(Cellule))) == NULL) { // on alloue de la mémoire pour notre nouvelle cellule (mini-racine)
|
||||||
|
printf("Impossible d'allouer de la mémoire supplémentaire.\n"); // gestion de l'erreur
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
/* TODO: TROUVER UN ENDROIT Où FREE CETTE NOUVELLE CELLULE A L'AVENIR */
|
||||||
|
|
||||||
|
nouvelleCellule->gauche = curseur; // membre gauche = curseur
|
||||||
|
nouvelleCellule->droite = curseur->suivant; // membre droit = élément suivant dans la liste
|
||||||
|
nouvelleCellule->lettre = '\0';
|
||||||
|
nouvelleCellule->frequence = nouvelleCellule->gauche->frequence + nouvelleCellule->droite->frequence;
|
||||||
|
|
||||||
|
curseur = curseur->suivant->suivant; // on va au suivant 2x car on a déjà ajouté le suivant en tant que membre droit
|
||||||
|
|
||||||
|
/* TODO: FUITE ICI ?? */
|
||||||
|
*liste = curseur; // on change le point de départ de notre liste pour ne pas traiter en boucle les anciennes cellules
|
||||||
|
ajouterRangee(liste, nouvelleCellule); // on ajoute à la liste notre nouvelle cellule
|
||||||
|
curseur = *liste; // on met à jour le curseur
|
||||||
|
} else { // cas du dernier élément
|
||||||
|
*liste = curseur;
|
||||||
|
curseur = curseur->suivant;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void encode(FILE *entree, FILE *sortie) {
|
void encode(FILE *entree, FILE *sortie) {
|
||||||
|
|
Reference in a new issue