#include "../include/huf.h" #include #include double* computeFrequencies(const char* filepath) { double* frequencies = (double*) malloc(256 * sizeof(double)); int totalChars = 0; // initialisation du tableau à 0 for (int i = 0; i < 256; i++) { frequencies[i] = 0; } // parcours du fichier et comptage des caractères FILE* file = fopen(filepath, "r"); char current; while ((current = fgetc(file)) != EOF) { frequencies[(size_t) current]++; totalChars++; } // conversion des effectifs en fréquences for (int i = 0; i < 256; i++) { frequencies[i] /= totalChars; } return frequencies; } Vertex* buildTree(double* frequencies) { int vertexCount = 0; // on compte le nombre de sommets à allouer // (uniquement les caractères qui apparaissent au moins une fois) for (int i = 0; i < 256; i++) { if (frequencies[i] > 0) { vertexCount++; } } // on alloue la place pour 2n + 1 sommets (nombre total // de sommets dans l'arbre binaire) Vertex* tree = (Vertex*) malloc((2 * vertexCount - 1) * sizeof(Vertex)); // (à faire: algo pour remplir l'arbre) // (trier le tableau des fréquences ?) return tree; }