86 lines
1.8 KiB
C
86 lines
1.8 KiB
C
|
|
#include "hufftree.h"
|
||
|
|
|
||
|
|
/************************************/
|
||
|
|
/* Primitives des arbres de Huffman */
|
||
|
|
/************************************/
|
||
|
|
|
||
|
|
/* Création d'une feuille */
|
||
|
|
huffnode *create_huffleaf(int byte, int freq) {
|
||
|
|
// À écrire
|
||
|
|
return NULL;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Fusion de deux arbres avec un nouveau noeud racine */
|
||
|
|
huffnode *merge_hufftree(huffnode *pl, huffnode *pr) {
|
||
|
|
// À écrire
|
||
|
|
return NULL;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Teste si un noeud est une feuille */
|
||
|
|
bool isleaf_huffnode(huffnode *p) {
|
||
|
|
// À écrire
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Retourne la valeur de l'octet correspondant à un noeud */
|
||
|
|
int getbyte_huffnode(huffnode *p) {
|
||
|
|
// À écrire
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Retournent les fils d'un noeud */
|
||
|
|
|
||
|
|
huffnode *getleft_huffnode(huffnode *p) {
|
||
|
|
// À écrire
|
||
|
|
return NULL;
|
||
|
|
}
|
||
|
|
huffnode *getright_huffnode(huffnode *p) {
|
||
|
|
// À écrire
|
||
|
|
return NULL;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Libération d'un arbre */
|
||
|
|
|
||
|
|
void free_hufftree(huffnode *p) {
|
||
|
|
// À écrire
|
||
|
|
}
|
||
|
|
|
||
|
|
/**********************************************/
|
||
|
|
/* Fonctions manipulant les arbres de Huffman */
|
||
|
|
/**********************************************/
|
||
|
|
|
||
|
|
/* Comparaison de deux arbres */
|
||
|
|
bool compare_hufftree(void *p1, void *p2) {
|
||
|
|
// À écrire
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Création de l'arbre de Huffman à partir du fichier à compresser */
|
||
|
|
huffnode *datafile_to_hufftree(FILE *input) {
|
||
|
|
/* Phase 1: création du tableau de fréquences */
|
||
|
|
|
||
|
|
// À écrire
|
||
|
|
|
||
|
|
/* Phase 2: intialisation de la file de priorité à partir du tableau de
|
||
|
|
* fréquences */
|
||
|
|
|
||
|
|
// À écrire
|
||
|
|
|
||
|
|
/* Phase 3: création de l'arbre de Huffman à partir de la file de priorités */
|
||
|
|
|
||
|
|
// À écrire
|
||
|
|
|
||
|
|
return NULL;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Écriture de l'arbre de Huffman dans le futur fichier compressé */
|
||
|
|
void save_hufftree(huffnode *p, FILE *f) {
|
||
|
|
// À écrire
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Lecture de l'arbre de Huffman dans le fichier compressé */
|
||
|
|
huffnode *read_hufftree(FILE *f) {
|
||
|
|
// À écrire
|
||
|
|
return NULL;
|
||
|
|
}
|