#ifndef __FREQ_H__ #define __FREQ_H__ #include #define TRUE 1 #define FALSE 0 #define NUM_CHARS 256 // structure représentant un sommet d'un arbre de Huffman typedef struct Vertex Vertex; struct Vertex { // le double `freq` indique la fréquence d'apparition de la lettre // du sommet dans le corpus, ou bien la somme des fréquences de ses fils double frequency; // le caractère `value` est le caractère du corpus que ce sommet // représente (caractère ASCII 0 - 255) char value; // pointe vers le sommet parent à celui-ci, ou NULL s'il n'a pas de parent, // comme par exemple pour la racine et les sommets en cours de traitement Vertex* parent; // pointe vers les deux enfants de ce sommet, ou NULL s'il n'a pas // d'enfants, comme par exemple pour les feuilles Vertex *child_l, *child_r; }; // structure représentant un arbre de Huffman typedef struct Tree Tree; struct Tree { // quantité de sommets dans l'arbre. Le tableau des sommets contient // exactement `size` éléments size_t size; // tableau contenant les sommets de l'arbre, liés à leur parent, // excepté pour la racine Vertex* vertices; }; // calcule un tableau des fréquences des caractères dans le corpus, // indexé par la valeur numérique ASCII de chaque caractère double* computeFrequencies(const char* filepath); // déduit d'un tableau de fréquences de caractères un arbre de Huffman Tree buildTree(double* frequencies); #endif