add prefix command (draft)
This commit is contained in:
parent
53cd72e281
commit
8f4b254377
2 changed files with 34 additions and 8 deletions
12
arbre.c
12
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) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
30
arbre.h
30
arbre.h
|
@ -6,16 +6,34 @@
|
||||||
|
|
||||||
#include "liste.h"
|
#include "liste.h"
|
||||||
|
|
||||||
// Définition de l'Arbre
|
// Définition de l'Arbre.
|
||||||
typedef Cellule *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);
|
void convertisseurListeEnArbre(Liste *liste);
|
||||||
|
|
||||||
// Encode un fichier
|
// Encode un fichier.
|
||||||
void encode(FILE *entree, FILE *sortie);
|
void compression(FILE *entree, FILE *sortie);
|
||||||
|
|
||||||
// Décode un fichier
|
// Décode un fichier.
|
||||||
void decode(FILE *entree, FILE *sortie);
|
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
|
#endif
|
||||||
|
|
Reference in a new issue