From 666c321c5eac844b0c6be083e6ff9c823fadc969 Mon Sep 17 00:00:00 2001 From: untypequicode Date: Thu, 24 Oct 2024 18:15:56 +0200 Subject: [PATCH] update tp-huffman --- tp-huffman/hufftree.c | 56 ++++++++++++++++++++++++++++++------------ tp-huffman/hufftree.o | Bin 8392 -> 12456 bytes tp-huffman/main.o | Bin 30040 -> 29240 bytes tp-huffman/tp | Bin 64856 -> 65688 bytes 4 files changed, 40 insertions(+), 16 deletions(-) diff --git a/tp-huffman/hufftree.c b/tp-huffman/hufftree.c index 9cff40d..affed94 100644 --- a/tp-huffman/hufftree.c +++ b/tp-huffman/hufftree.c @@ -1,4 +1,6 @@ #include "hufftree.h" +#include "error.h" +#include /************************************/ /* Primitives des arbres de Huffman */ @@ -6,43 +8,60 @@ /* Création d'une feuille */ huffnode *create_huffleaf(int byte, int freq) { - // À écrire - return NULL; + huffnode *h = malloc(sizeof(huffnode)); + h -> freq = 0; + h -> byte = 0; + h -> leftchild = NULL; + h -> rightchild = NULL; + return h; } /* Fusion de deux arbres avec un nouveau noeud racine */ huffnode *merge_hufftree(huffnode *pl, huffnode *pr) { - // À écrire - return NULL; + huffnode *h = create_huffleaf(0, pl->freq + pr->freq); + h->leftchild = pl; + h->rightchild = pr; + return h; } /* Teste si un noeud est une feuille */ bool isleaf_huffnode(huffnode *p) { - // À écrire - return true; + return p->leftchild == NULL && p->rightchild == NULL; } /* Retourne la valeur de l'octet correspondant à un noeud */ int getbyte_huffnode(huffnode *p) { - // À écrire - return 0; + if (isleaf_huffnode(p)) { + ERROR("getbyte_huffnode: noeud feuille attendu\n"); + exit(1); + } + return p->byte; } /* Retournent les fils d'un noeud */ huffnode *getleft_huffnode(huffnode *p) { - // À écrire - return NULL; + if (isleaf_huffnode(p)) { + ERROR("getleft_huffnode: noeud interne attendu\n"); + exit(1); + } + return p->leftchild; } huffnode *getright_huffnode(huffnode *p) { - // À écrire - return NULL; + if (isleaf_huffnode(p)) { + ERROR("getright_huffnode: noeud interne attendu\n"); + exit(1); + } + return p->rightchild; } /* Libération d'un arbre */ void free_hufftree(huffnode *p) { - // À écrire + if (p == NULL) return; + free_hufftree(p -> leftchild); + free_hufftree(p -> rightchild); + free(p); } /**********************************************/ @@ -51,15 +70,20 @@ void free_hufftree(huffnode *p) { /* Comparaison de deux arbres */ bool compare_hufftree(void *p1, void *p2) { - // À écrire - return true; + huffnode *v1 = (huffnode*)p1; + huffnode *v2 = (huffnode*)p2; + if (v1 == NULL || v2 == NULL) { + ERROR("compare_hufftree: NULL pointeur\n"); + exit(1); + } + return v1->freq < v2->freq; } /* Création de l'arbre de Huffman à partir du fichier à compresser */ huffnode *datafile_to_hufftree(FILE *input) { /* Phase 1: création du tableau de fréquences */ - // À écrire + int *tab = malloc(256 * sizeof(int)); /* Phase 2: intialisation de la file de priorité à partir du tableau de * fréquences */ diff --git a/tp-huffman/hufftree.o b/tp-huffman/hufftree.o index b6f41bedd78b6577902f0c4a2c4db51738058ec9..3dda15404218312bf0d42a0fa94b1bdd473c2407 100644 GIT binary patch literal 12456 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 literal 8392 zcmbtZYiwM_6`s2fXOoTBcASJ52fT(PCLz0vod+R_gX27iAt4WuHZ-Bv`?&j1*1Oxg zcS91O4G*=Xv_K@<0tzh>RY}Vqsv1X6p>%sIYy zk8S8^o=g z`{Zov@vSQdz zCtj|?OEA3<0O80yMB$ju60r_Mq2FAw0ZG$HIAkQ2t_z2teWki0(Mrt&JB>`ulYLWA zW6DqUV>xmTE@5LhAByUCk>S`tNSWA2*3By-sV5?`asD@;95diX4Z023q`@)+ZqguW zz-A4uGhmAbHyE&0gG~mEYA|NNm1E z0cwXj`U8{SF`z-j)LgR|RWSorYS67B-vUmrt&UY;EbE1LD84j|?VHp^xpf}dP*EKk zK<`55$|~|U6c%FrJ`yQkeE`)BweMms*d#NEC-O7&24ddxw`Awamo%<|N60%Xz)ToCzdfTOU^_d{-3 z*2jrX%<%q%9~1^);@VTl8VGgiM~2Vq`&oAjs~O_0YoZx7fBH`8i!OLJYTX&#I2>JY z2@BUk;i0y|>JehrWT-GW615(RUcZA(QeYBJJb*@PhNIS{=ruPRVJHNy+IGEIv^`}{ z?6+MfTd*6RtL%I^TdApL<+OuU&2ruKa;>7OG^dQ~N>F^a`V;T5IHFGF8krPu22e zw_dBanyFUp?nb-tvU*%QVg&vjsg#Y)ww)&1}|wSs8@ zjqPGJTWU^+0qg91%Y{)?TT?a7^MLGnwSb{+I$%aQjvYG<_6O4dgFEiHsx4AB%3P;u z<21|+B+lO5ZUsV#)2HVv*=7%s*7FkxHJIqJ>dCXK_55)f&xo?8cy>*rI5539aOO>1 zz#2_xxCIMNFtwgpzi?g*kAusB#vdlV=WS1Pe>JqDvtus^fWtaG zL|}qVMJcYo-LF4}JS4q6bN#J;{k^7o&ieD8QGe+(>ffe%*tC5AcKiK*LiKa`zg%x1 zbNj#bGwP3hNLT&J{K(~p0SQCaMu&R0&+}zWZME|Y-gQjeSR9@ErduiN|$4ee8nrnt)!vzz`k|@YwIubPsJ3 z{7b~&EO=ahnE0iO{r>`Weut^nd_T3r zpT0Q$qohla9rHU0_Y3|b!q*8tM*eINJicvX8W;R+#P1jU5+hgqjAnlZNLLa1PHN|b z;LC)~#}#uQ;kr6Ny!o`^^Jl1?XGA;Kl0QEZ{5;bCRPg2l5PV+|JU-Vj{aWzbDQtFAM&!g?ZL33&>k#`?=GlsG<`gv&Kl zKs}xZ%m-YhRterFyhiX36HW{M1;W97AKQPEc-~LA-#-!0^Tzz&h`)t$=07Bi=S)n@ ze{7)Q^}_soT34T=dgi-{pCn$!CrLa`6HS$7#stsvJ1O`TgwF_`*W0s#=kdQHcplH6 z1wToc&pYfV-;YTeAM<>_j|rZi83lF!;0upC+ggrwkt;vQrKR=Kss_?>!6&-&fq)7!`P(Gf&}Ts0N{gT<~7R%J=ay zOOp0Opuw}?|7t%Bwz5s^miu24JiO1MT?-sOg2vz%Oc&^Z(oF|dT>q%!b1Qtp)(P+P z+4|>z@_CZvGqeZhus44}DRl!IQZD)f2pFZ_qYoB8)5yQb@#DIf R&AuBSOpy4!(V&^}`!`g#qhSC5 diff --git a/tp-huffman/main.o b/tp-huffman/main.o index e060e5a449fed9a23b6770c848370f10b75758da..c1f81d2eda78d677f77d0ac753ac8be22cfd5f98 100644 GIT binary patch delta 8815 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 delta 12432 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 LxiXvkYxMsB|H3wP