Structure de l'arbre de Huffman
struct arbre_huffman {
unsigned char symbole;
unsigned int occurence;
unsigned int code_binaire;
unsigned int nb_bits;
struct arbre_huffman *gauche, *droite;
};
Structure du dictionnaire
struct dico{
unsigned int code_binaire;
unsigned int nb_bits;
};
SOURCE_NON_TROUVEE -1
CIBLE_NON_GENEREE -2
MAX_SYMBOLES 256
MAX_OCCURENCES 255
MAX_NOM 255
GAUCHE 0
DROITE 1
unsigned int NbOctFichierAComp=0;
unsigned int NbOctFichierADecomp=0;
unsigned int NbOctEntete=0;
unsigned int NbOctDonnees=0;
unsigned int NbSymboles=0;
unsigned int MaxOcurrences=0;
unsigned int MaxNbBits=0;
unsigned int TabNbBits=0;
unsigned int TabOcurrences[MAX_SYMBOLES];
struct arbre_huffman *TabArbres[MAX_SYMBOLES], *Racine=NULL;
struct dico Dictionnaire[MAX_SYMBOLES];
Initialisation d'une liste chainée.
Chemin* nouveauChemin(int x, int y);
INIT
Initialisation du tableau des occurrences.
void huffman_initialise_TabOccurences();
Initialisation du dictionnaire.
void huffman_initialise_Dictionnaire();
Initialisation du tableau des arbres.
void huffman_initialise_TA(struct arbre_huffman *TA[]);
Contruction de l'arbre binaire.
void huffman_construire_arbre_binaire();
TOOL
Tri l'arbre de Huffman par occurences.
void tri_TA_occurrences(struct arbre_huffman *TA[]);
Affiche de la syntaxe.
void affiche_syntaxe(char commande[]);
COMPRESSION
Création du code par un parcours préfixé de l'arbre.
`void huffman_creer_code(struct arbre_huffman *arbre, unsigned int code, unsigned int niveau);
Fonction de compression.
`int huffman_compression(char NomFichier[]);
Ecriture de l'en-tête.
`void huffman_ecrire_entete(FILE *fcible);
Ecriture du codage.
`int huffman_ecrire_codage(FILE *fsource, FILE *fcible);
Calcul des occurences des symboles dans le fichier source.
`int huffman_calcule_occurences(char nomfichier[]);
DECOMPRESSION
Fonction de décompression.
int huffman_decompression(char NomFichierSource[]);
Lecture de l'en-tête.
void huffman_lire_entete(FILE *fentree);
Lecture du codage.
int huffman_lire_codage(FILE *fsource, FILE *fcible);
Calcul de la taille du fichier.
unsigned int huffman_calcule_taille_fichier(FILE *fentree);