#ifndef _ARBRE_HUFFMAN_H_ #define _ARBRE_HUFFMAN_H_ 1 #include #include #include "liste.h" // Définition de l'Arbre. typedef Cellule *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 (struct Liste) en arbre (struct Arbre). void listeVersArbre(Liste *liste); // Encode un fichier. void compression(FILE *entree, FILE *sortie); // Décode un fichier. void decompression(FILE *entree, FILE *sortie); /* Ajoute les valeurs des lettres dans l'arbre récursivement. -> `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 J'essaie de favoriser l'utilisation de pointeur pour éviter de recopier plus fois la même chose en mémoire. Parcours prefixé de l'arbre. */ void assignationCode(Arbre arbre, int codeActuel, int longueur, Lettre *lettresListe, int *i, int *longueurTotale); // Convertis un arbre (struct Arbre) en liste (struct Lettre). Lettre * arbreVersListe(Arbre arbre, int taille, int *tailleTotale); #endif