From 158f5dfedc026b5b3d72d211640c72e932317634 Mon Sep 17 00:00:00 2001 From: name Date: Sat, 14 Dec 2019 15:02:08 +0100 Subject: [PATCH] =?UTF-8?q?Y=C3=BBki=20-=20Save=20Main=2014/12?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main_compress.c | 44 ++++++++++++++++++-------------------------- 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/main_compress.c b/main_compress.c index cbea16c..98291af 100644 --- a/main_compress.c +++ b/main_compress.c @@ -25,7 +25,7 @@ int main(int argc, char **argv){ return -2; } printf("Tableau : \n"); - arbre N = malloc(ASCII_EXT*sizeof(noeud)); // Initialisation de l'arbre + arbre N[ASCII_EXT]; // Initialisation de l'arbre printf("Tableau initialisé -1: \n"); init_tab(N,-1,ASCII_EXT); // On initialise l'arbre avec des poids de -1 printf("Tableau get freq : \n"); @@ -45,7 +45,7 @@ int main(int argc, char **argv){ void init_tab(arbre T[], int Elt, int n){ int i; for(i=0;ipoids=Elt; } } @@ -95,34 +95,26 @@ void afficher_tab(arbre T, int n){ } } -arbre huffman(arbre T){ +arbre huffman(arbre T[]){ // Création de l'arbre de codage de Huffman en considérant une liste avec les fréquences d'apparition des caractères ordonnée croissante // récupérer les deux plus petits poids (cf : deux premieres occurences) arbre H = malloc(sizeof(arbre)); H=creer_arbre_vide(); - while(compteur_tab(T,ASCII_EXT)>1){ - // Récupération des plus faibles poids - int i; - i=0; - while(T[i].poids!=-1){ - i++; - } - arbre tmp;k - tmp1=creer_arbre_vide(); - tmp2=creer_arbre_vide(); - tmp3=creer_arbre_vide(); - int newpoids; - newpoids=T[i].poids+T[i+1].poids; - tmp->fils_gauche=creer_feuille(T[i].elt,T[i].poids); - tmp->fils_droit=creer_feuille(T[i+1].elt,T[i+1].poids); - tmp->poids=newpoids; - - T[i].poids=-1; - T[i].elt=-1; - T[i+1].poids=newpoids; - T[i+1].elt=-1; - tri_tab(T,ASCII_EXT); - H= + int i; + i=0; + while(T[i]->poids==-1){ + i++; } + int Index; + Index=i; + while(Index<255){ + arbre tmp=malloc(sizeof(arbre)); + tmp->fils_gauche=T[Index]; + tmp->fils_droit=T[Index+1]; + T[Index+1]=tmp; + Index++; + tri_tab(T,ASCII_EXT); + } + return T[Index]; }