29 lines
908 B
C
29 lines
908 B
C
|
#ifndef __FREQ_H__
|
||
|
#define __FREQ_H__
|
||
|
|
||
|
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 bien vers NULL s'il n'a
|
||
|
// pas de parent affecté, comme c'est le cas pour les sommets non-traités
|
||
|
// et pour la racine)
|
||
|
Vertex* parent;
|
||
|
};
|
||
|
|
||
|
// 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
|
||
|
Vertex* buildTree(double* frequencies);
|
||
|
|
||
|
#endif
|