nicloss
Messages postés4Date d'inscriptionmardi 11 mai 2004StatutMembreDernière intervention26 novembre 2005
-
26 nov. 2005 à 15:33
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 2010
-
26 nov. 2005 à 20:29
Bonjour, j'ai un projet en programmation c qui consiste à coder un programme qui compresse selon l'algorithme de Huffman.
J'ai bien compris le principe mais je n'ai pas beaucoup d'expérience en
prog c et le prof nous oblige à utiliser une structure qu'il nous a
donné pour l'arbre.
Et le problème est que je ne comprend pas cette structure et donc je ne sais pas comment l'utiliser.
Si quelqu'un pouvait m'expliquer cette structure, cela m'aiderai beaucoup...
Merci d'avance,
typedef unsigned char uchar;
/* Attention : ulong déjà défini dans "/usr/include/sys/types.h" */
typedef unsigned long ulong;
struct huffman {
enum { EXTERNE, INTERNE} type; /* Donnée dans champ u */
union {
struct {
struct huffman *fg; /* Code 0 */
struct huffman *fd; /* Code 1 */
} interne; /* Un noeud interne */
uchar feuille; /* La valeur de l'octet */
} u;
ulong proba; /* Le nombre d'occurence (cumulé pour un noeud interne) */
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 26 nov. 2005 à 16:07
La structure, c'est un arbre. Un arbre, c'est soit une feuille, soit une noued, avec sous sous arbre gauche et un sous arbre droit. Union exprime ce choix entre feuille et noeud, c'est un peu moche c'est vrai
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 26 nov. 2005 à 16:34
Pour ce type de structures, le langage C n'est pas terrible. Le langages à objets sont bien plus adaptés.
Pour utiliser ta structure, tu aura des codes du genre:
struct huffman* h; // que tu obtiens de je ne sais pas où
pour savoir si c'est une feuille, tu as h->type
if(h->type == EXTERNE)
{
h->feuille contient la valeur de la feuille
}
else
{
h->interne.fg et h->interne.fd désignent les sou-arbres
}
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 26 nov. 2005 à 20:29
Bien sur, dans l'exemple que je t'ai donné, h n'est pas initialisé. Du as sans doute un algo a suivre ou quelque chose, non? Si ce n'est pas le cas, bon courage car l'algo n'est pas particulièrement simple a coder. Tu as un exemple dans mes sources si tu veux