J'ai essayé de réaliser un Huffman progressif et c'est normal que les taux soit un tout petit peu mieux que le Huffman semi-adaptatif?
Par contre j'ai un assez gros problème, je possède les structures:
//Définition d'une feuille
typedef struct Sheet {
BOOL noeud; //TRUE=Noeud, FALSE=Feuille
union {
unsigned char data; //Donnée d'une feuille
struct Noeud *ptr; //Pointeur sur un autre noeud
} U_Sheet;
} H_Sheet;
//Définition d'un noeud
typedef struct Noeud
{
H_Sheet FDroite; //Feuille droite
H_Sheet FGauche; //Feuille gauche
char CodeNoeud [MAXCODE];
} H_Noeud;
Et dans une fonction j'alloue la mémoire à une feuille ou noeud de cette façon:
H_Noeud *PtrNoeud=((H_Noeud *) malloc (sizeof (H_Noeud)));
Mais je voudrais effacer complètement l'arbre, pour ça j'ai au moins un pointeur qui pointe sur ça racine et j'ai cette fonction:
H_Noeud *HUFF2_DeleteTree (H_Noeud *PtrRacine)
{
if (PtrRacine)
{
if (PtrRacine->FGauche.U_Sheet.ptr) PtrRacine->FGauche.U_Sheet.ptr=HUFF2_DeleteTree ((H_Noeud*)(PtrRacine->FGauche.U_Sheet.ptr));
if (PtrRacine->FDroite.U_Sheet.ptr) PtrRacine->FDroite.U_Sheet.ptr=HUFF2_DeleteTree ((H_Noeud*)(PtrRacine->FDroite.U_Sheet.ptr));
free (PtrRacine);
}
return NULL;
}
Or je ne comprend pas le programme plante lamentablement.
