要传输一则报文内容如下:
“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 = -

这篇博客介绍了如何为给定的报文创建哈夫曼编码。作者通过C语言实现了这一过程,详细阐述了利用数据结构解决问题的思路,包括设计四个功能函数来逐步完成任务。在处理包含重复字符的报文时遇到了挑战,最终成功解决了问题。
最低0.47元/天 解锁文章
2095





