C/Visual C - CODIGO DE HUFFMAN

 
Vista:

CODIGO DE HUFFMAN

Publicado por POLO (2 intervenciones) el 10/06/2003 19:21:34
HOLA ESPERO ME PUEDADN AYUDAR TENGO QUE REALIZAR UN PROGRAMA EN C++, DE ARBOLES ES DECIR, TENGO QUE HACER EL CODIGO DE HUFFMAN EN C++.

PERO NO SE COMO, MIRA TENGO UNA ESTRUCTURA QUESELLAMA ARBOL
EN LA CUAL TENGO LOS SIGUIENTES DATOS:

struct nodo
{

int hd;
int hi;
char dato
}arbol[10]

hd es para el hijo derecho,
hi es para el hijo izquierdo
dato es para el dato del arbol

pero como los pido, o como le voy a hecer para que al intrioducir una palabra yo le de en que direccion esta.

claro teniendo las letras en el arbol con su respectiva frecuencia..

espero me puedadn ayudar ....

gracias


Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:CODIGO DE HUFFMAN

Publicado por chuidiang (677 intervenciones) el 12/06/2003 21:05:45
No entiendo muy bien tú problema, pero te cuento cómo lo hice yo en cierta ocasión.

Mis códigos huffman eran a base de 1 y 0. Cada secuencia concreta de 1 y 0 tenía un valor. por ejemplo,

Código Huffman Valor
11111 1
111011 2
1011 3
...

Lo que hice fue escribir todos los códigos con sus valores en un fichero con un formato parecido a la tabla que te he puesto.
Hice un programa que generaba un arbol. Leia de cada línea el código y el valor. En el árbol iba creando nodos de forma que si leía un uno, creaba el nodo derecho, si leía un cero, el izquierdo. El valor lo metía en el último nodo creado para cada código. Los nodos intermedios quedaban sin valor (dato).

Es decir, después de leer la primera línea de la tabla y tratarla, tenía un árbol con 5 nodos, todos hacia la derecha y el último guardaba el valor.

Mi problema real era que tenía que decodificar una secuencia de 1 y 0 compuesta por códigos huffman. Una vez creado el árbol, únicamente tenía que ir leyendo "bits", avanzando en el árbol desde la raíz hasta llegar a una hoja. En ese momento extraía el valor y volvía a empezar en la raíz.

No sé si está suficientemente claro, pero espero que al menos te dé una idea de por dónde tirar.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar