diff --git a/arbre.c b/arbre.c index 38c6e31..8981d4b 100644 --- a/arbre.c +++ b/arbre.c @@ -29,10 +29,18 @@ void convertisseurListeEnArbre(Liste *liste) { } } -void encode(FILE *entree, FILE *sortie) { +void prefix(Arbre arbre, int codeActuel, int longueur, Lettre *lettresListe, int *i, int longueurTotale) { + if (arbre->lettre != '\0') { + lettresListe[*i].lettre = arbre->lettre; + lettresListe[*i].code = codeActuel; + lettresListe[*i].longueur = longueur; + } +} + +void compression(FILE *entree, FILE *sortie) { } -void decode(FILE *entree, FILE *sortie) { +void decompression(FILE *entree, FILE *sortie) { } diff --git a/arbre.h b/arbre.h index 00ab767..6749ab8 100644 --- a/arbre.h +++ b/arbre.h @@ -6,16 +6,34 @@ #include "liste.h" -// Définition de l'Arbre +// Définition de l'Arbre. typedef Cellule *Arbre; -// Convertis une liste en Arbre +// Définition d'une lettre/caractère au sens large +typedef struct lettre { + char lettre; // la lettre / caractère + int code; // code binaire + int longueur; // longueur du code +} Lettre; + +// Convertis une liste en Arbre. void convertisseurListeEnArbre(Liste *liste); -// Encode un fichier -void encode(FILE *entree, FILE *sortie); +// Encode un fichier. +void compression(FILE *entree, FILE *sortie); -// Décode un fichier -void decode(FILE *entree, FILE *sortie); +// Décode un fichier. +void decompression(FILE *entree, FILE *sortie); + +/* + Ajoute les valeurs des lettres dans l'arbre. + -> `arbre` l'arbre binaire de huffman + -> `codeActuel` monte progresssivement quand on parcours l'arbre et c'est la valeur assigné aux noeuds + -> `longueur` la profondeur du noeud dans l'arbre + -> `lettresListe` notre liste de lettre + -> `i` nous permet de se balader dans la liste `lettresListe` (c'est là où l'on se trouve) + -> `longueurTotale` est la longueur totale du code en sortie en bits +*/ +void prefix(Arbre arbre, int codeActuel, int longueur, Lettre *lettresListe, int *i, int longueurTotale); #endif