66Fermer68
geogeoLe 03/03/2004 à 18:25
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. sad