This repository has been archived on 2022-03-31. You can view files and clone it, but cannot push or open issues or pull requests.
Huffman/arbre.h

40 lines
1.2 KiB
C
Raw Normal View History

#ifndef _ARBRE_HUFFMAN_H_
#define _ARBRE_HUFFMAN_H_ 1
#include <stdio.h>
#include <stdlib.h>
#include "liste.h"
2021-12-23 20:02:20 +01:00
// Définition de l'Arbre.
typedef Cellule *Arbre;
2021-12-23 20:02:20 +01:00
// 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);
2021-12-23 20:02:20 +01:00
// Encode un fichier.
void compression(FILE *entree, FILE *sortie);
// Décode un fichier.
void decompression(FILE *entree, FILE *sortie);
2021-12-23 20:02:20 +01:00
/*
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'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