add prefix command (draft)

This commit is contained in:
Mylloon 2021-12-23 20:02:20 +01:00
parent 53cd72e281
commit 8f4b254377
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
2 changed files with 34 additions and 8 deletions

12
arbre.c
View file

@ -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
View file

@ -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'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