Red de conocimiento informático - Conocimiento del nombre de dominio - ¡Diseño de curso de emergencia!

¡Diseño de curso de emergencia!

#define MAXSIZE 100 /*Número máximo de nodos permitidos*/

#define MAXWEIGHT 32767 /*Valor de peso máximo permitido*/

#define n 6

typedef char elemtype;

typedef struct

{

char data;

int peso /*ahorrar peso*/

char data; p>

int parent; /*Información del nodo padre*/

int lchild; /*Información del nodo hijo izquierdo*/

int rchild; /* Información del nodo secundario derecho **

}huffnode; /* Tipo de nodo del árbol Huffman**

typedef struct

{

char cd[MAXSIZE ];

int inicio;

} huffcode;

void creathuffmamtree(huffnode ht[])

{

//*construir un árbol de Huffman */

int i,k,l,r,min1,min2

for (i=0;i<; 2*n- 1;i++)

ht[i].parent=ht[i].lchild=ht[i].rchild=0

for (i=n; ;i<2 *n-1;i++) /*Construir árbol de Huffman*/

{

min1=min2=MAXWEIGHT /*Asignar valores iniciales al peso mínimo; y el segundo peso más pequeño* /

l=r=0; /* L y R son las dos posiciones de nodo con el peso más pequeño*/

for (k=0;k <=i-1;k++ )

if (ht[k].parent==0) /* Seleccione el nodo padre como nodo cero*/

if (ht[ k].weight

{

min2=min1

r=l

; p>

min1 =ht[k].peso

l= k;

}

else if (ht[k].peso< min2)

{

min2=ht[k].peso

r=k; p>printf("\ n");

ht[l].padre=i;

printf(" lp%d",ht[l].padre); /p>

ht[r].parent=i;

printf(" rp%d",ht[r].parent=i); peso=ht[l] .peso+ht[r].peso

printf(" lw%d",ht[l].peso

printf(" rw); %d",ht[r].peso);

printf (" iw%d",ht[i].peso=ht[l].peso+ht[r].peso);

ht[i].lchild=l;

printf(" il%d",l

ht[i].rchild=r; /p>

printf(" ir%d\n",r);

}

}<

/p>

void creatHuffmancode (huffnode ht[],huffcode hcd[])

{

/* Algoritmo para encontrar códigos Huffman basados ​​en el árbol de Huffman*/

int i,f,c;

huffcode d;

for (i=0;i

{

d.start=n+1; /*Fin de la codificación*/

c=i

ht[ 0].parent=6;

f=ht[i].parent;

while (f. =0) /*Carácter codificado por Huffman inverso*/

{

d! =0) /* Codificación inversa de Huffman de hoja a raíz*/

{

if (ht[f].lchild==c)

{/ * printf("entonces:%d",f);*/

d.cd[--d.start]='1'; /p>

{ /*printf("elseF:%d",f);*/

d.cd[--d.start]='0'; p>}

c=f;

/*printf("ht[ f].parent:%d",ht[ f].parent);* /

f=ht[f].parent;

/* printf("F$%d",f */

}hcd[i]=d;

/* printf("hcd[i]:%d\n",hcd[i]); >

}

void printhuffmancode(huffnode ht[],huffcode hcd[])

{

//* Salida del código Huffman */

int i,k;

printf ("shu chu ha fu man bian ma:\n"); i++) /* Caracteres de salida en secuencia*/

{

printf(" %c:",hcd[i].data /*Valor del campo de datos del nodo de salida*/);

for (k=hcd[i]. start;k<=n;k++)

printf("%4c:",hcd[i].hcd [k]) ; /*Codificación de caracteres de salida*/

printf("\n"

}

}

}

main()

{

huffnode ht[50]

huffcode hcd[50];

int w;

int g;

w=7

mientras(w!=4)

{

printf("\n Huffman\n");

printf("~~~~~~~~~~~~~~ ~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n") ;

printf("| |");

printf("\n");

printf("| 1. Construya un árbol de Huffman.

|/n");

printf("| 2. Algoritmo para encontrar códigos Huffman basados ​​en el árbol de Huffman. |\n");

printf("| 3 . Salida Huffman codificación. |\n");

printf("| 4. Salir.|\n");

printf("| |");

printf("\n");

printf("------------------------------- ----------------------------------\n");

printf("Por favor ingrese su elección (1,2,3,4):");

scanf("%d",&w);

switch(w)

{

caso 1:

{

for(j=0;j

{

printf("Por favor ingrese");

scanf("%d",&ht[j].peso

}

); creathuffmamtree (ht);break;

}.

caso 2. createHuffmancode(ht,hcd);break

caso 3:

{/*for(g=0;g<6;g++)

{printf("ht[g].data:

scanf("%c); " ,&ht[g ].data);}*/

printhuffmancode(ht,hcd);break;}

default:break;

}< / p>

}

}

}