Você está na página 1de 2

ESTRUCTURAS

Lista
-tipo-Si es una letra su valor es 0 si es una raiz de dos nodos es 1
-letra-Guarda el ASCII de la letra o la sumatoria de letra de los hijos
-frecuencia-Numero de repetición de la letra o la sumatoria de frecuencias de los
hijos
-marca-Se usa al momento de generar el arbol, 0 significa que este elemento no t
iene un nodo creado, 1 significa que ya tiene un nodo creado
-APUNTADOR ant-Apunta al elemento anterior de la lista
-APUNTADOR sig-Apunta al elemento siguiente de la lista
Nodo
-tipo-Indica si es el nodo de una letra o si es el nodo padre, si es 0, indica q
ue es el nodo de una letra, el valor distinto a 0 es que trae la sumatoria de lo
s valores ASCII de las letras hijos
-Hoja (raiz o APUNTADOR valor)-Si tipo es distinto de 0, se escoge raiz, aquí se g
uarda la sumatoria de frecuencias de los hijos, si tipo es 0 entonces se guarda
la direccion del elemento de la lista al que pertenece
-APUNTADOR izq-Apunta a su hijo izquierdo
-APUNTADOR der-Apunta a su hijo derecho
Fila
-APUNTADOR hijo-Apunta a un Nodo que fue creado de la UNION de dos nodos
-APUNTADOR sig-Apunta al siguiente elemento de la fila
Cadena
-letra-Se almacena las letras de la cadena de entrada
-APUNTADOR sig-Apunta a la siguiente letra de la cadena
VARIABLES GLOBALES
Para lista
? APUNTADOR inilista .- Siempre apunta al inicio de la lista
? APUNTADOR finlista .- Se usa para crear la lista, apunta siempre al final, des
pués de crear la lista ya no es necesario
? APUNTADOR mov .- Importante, pues es el que recorre los elementos de la lista
Para nodo
? APUNTADOR iniarbol .- Siempre apunta al ultimo nodo creado de la union de dos
nodos, esto es porque el ultimo nodo en crearse será siempre la raiz del arbol
Para fila
? APUNTADOR inifila .- Siempre apunta al elemento que sigue salir de la fila
? APUNTADOR sigfila .- Siempre apunta al ultimo elemento que llego a la fila
Para cadena
? APUNTADOR inicadena .- Siempre apunta al primer caracter de la cadena de entra
da
? APUNTADOR leerletra .- Apunta a la letra que se esta leyendo actualmente
FUNCIONES
? ListaEnlazada .- No recibe parámetros y no regresa nada, sirve para analizar la
cadena de entrada y generar la lista enlazada desordenada, contando cuantas vece
s se repite determinada letra en la cadena
? OrdenaLista .- No recibe parámetros y no regresa nada, sirve para ordenar los el
ementos de la lista enlazada de menor a mayor, las letras tambien cuentas, A sie
mpre sera menor que B y B es menor que C
? GeneraNodo .- Recibe un apuntador a un elemento de la lista, regresa un apunta
dor a un nodo. Esta funcion genera los nodos unicamente de las letras.
? InsertaLista .- Recibe un apuntador a lista y 2 enteros. No regresa nada. Esta
funcion se encarga de insertar un elemento creado de la union de 2 elemento de
lista.
? ArbolHuffman .- No recibe parámetros y no regresa nada, sirve para crear el arbo
l de Huffman.
? RecorridoArbol .- Recibe un apuntador a un nodo y no regresa nada. Se encarga
de recorrer el Arbol de Huffman in order.
? Interpretar .- No recibe parámetros y no regresa nada, sirve para recibir bits d
el teclado e ir recorriendo el arbol hasta lanzar una letra como interpretación.
? Entradas .- No recibe parámetros y no regresa nada. Se encargar de capturar la c
adena de entrada que sera codificada.
ALGORITMO DE FUNCIONAMIENTO
1. Capturar la cadena que sera codificada
2. Recorrer la cadena e ir contando cuantas veces aparece la letra en la cadena,
se genera un nuevo elemento en la lista por cada letra.
3. Se ordena la lista de letras de menor frecuencia de repetición hasta el mayor,
las letras tambien cuentas, en caso que la A se repita 3 veces y la C tambien, v
a primero la A porque es menor que C
4. Se genera el Arbol de Huffman
a. Se inicia la lista enlazada y se van generando nodo izquierdo y nodo derecho
i. Si es una letra se genera un nodo
ii. Si es una union de dos nodos se obtiene de la fila de nodos generados
b. Una vez que se tiene nodo izquierdo y derecho se genera una raiz, con la frec
uencia de los hijos y la letra o sumatoria de letras. Solo se puede generar la r
aiz si estan nodo izquierdo y derecho
c. Se guarda el nodo raiz en la fila
d. Se genera un nuevo elemento para la lista y se ordena según frecuencia y sumato
ria de letras.
e. Se repite los pasos a hasta el d hasta terminar con la lista
5. Se recorre el arbol de Huffman in order
6. Se reciben los bits a ser decodificados, si es 1 se recorre el hijo izquierdo
, si es 0 se recorre el hijo derecho, asi hasta llegar a una letra y se imprime
en pantalla.

Você também pode gostar