要传输一则报文内容如下:
“AAAAAAAAAAAAAAABBBBBBBBBCCCCCCCCDDDDDDDDDDDDEEEEEEEEEEFFFFF”
请为这段报文设计哈夫曼编码,并输出每个字符的哈夫曼编码。
思路:将问题分解为四个功能函数,逐个解决
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#define MAXLEAF 50
#define MAXNODE MAXLEAF*2-1
typedef struct Node{
char node;
int bits[MAXLEAF];
int weight;
int parent, lchild, rchild;
}HTNode;
HTNode ht[MAXNODE];
//输入字符串
void InputString(char s[])
{
printf("/*\n\t若想输入测试样例,则输入“1 ”\n");
printf("\t测试样例为题目要求:AAAAAAAAAAAAAAABBBBBBBBBCCCCCCCCDDDDDDDDDDDDEEEEEEEEEEFFFFF\n/*\n\n\n\n");
printf("请输入报文:");
scanf("%s",s);
if(strcmp(s,"1") == 0)
{
strcpy(s,"AAAAAAAAAAAAAAABBBBBBBBBCCCCCCCCDDDDDDDDDDDDEEEEEEEEEEFFFFF");
}
}
//获取权重
void GetWeight(char s[], int &n)
{
int i, j;
for(i = 0;i < strlen(s);i++)
{
if(i == 0)
{
HTNode ht1;
ht1.node = s[i];
ht1.weight = 1;
ht1.lchild = -1;
ht1.rchild = -