#ifndef __FREQ_H__ #define __FREQ_H__ #include #define TRUE 1 #define FALSE 0 #define NUM_CHARS 256 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; // les sommets virtuels sont ceux qui ne correspondent pas à une lettre // du corpus, mais chapeautent les autres sommets int is_virtual; // 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; }; typedef struct Tree Tree; struct Tree { size_t size; 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 du tableau de fréquences l'arbre de Huffman, représenté // par une liste de sommets chaînés Tree buildTree(double* frequencies); #endif