- 25
- 0
- 约3.59千字
- 约 14页
- 2017-07-03 发布于湖北
- 举报
哈夫曼编码解码实验报告汇编
哈夫曼编码解码实验
实验要求
掌握二叉树的相关概念
掌握构造哈夫曼树,进行哈夫曼编码。
对编码内容通过哈夫曼树进行解码。
实验内容
通过二叉树构造哈夫曼树,并用哈夫曼树对读取的txt文件进行哈夫曼编码。编码完成后通过哈夫曼树进行解码。
#includestdio.h
#includestring.h
#define MAX 100
//定义哈夫曼树的存储结构
typedef struct
{
char data;
int weight;
int parent;
int lch;
int rch;
}HuffNode;
//定义哈夫曼编码的存储结构
typedef struct
{
char bit[MAX];
int start;
}HuffCode;
HuffNode ht[2*MAX];
HuffCode hcd[MAX];
int Coun[127]={0};
int n;
char s1[200000];
char text[5000];
//构造哈夫曼树
void HuffmanTree()
{
int i,j,k,left,right,min1,min2;
//printf(输入叶子的节点数:);
//scanf(%d,n);
printf(字符数量=%d\n,n);
for(i=1;i=2*n-1;i++)
{
ht[i].parent=ht[i].lch=ht[i].rch=0;
}
j=0;
for(i=1;i=n;i++)
{
/*getchar();
printf(输入第%d个叶子节点的值:,i);
scanf(%c,ht[i].data);
printf(输入该节点的权值:);
scanf(%d,ht[i].weight);
*/
for(;j127;j++)
{
if(Coun[j]!=0)
{
ht[i].data=j;
//printf(%c,ht[i].data);
ht[i].weight=Coun[j];
//printf(%d,ht[i].weight);
break;
}
}
j++;
}
printf(\n);
for(i=1;i=n;i++)
{
printf(%c,ht[i].data);
}
printf(\n);
for(i=n+1;i=2*n-1;i++)
{//在前n个结点中选取权值最小的两个结点构成一颗二叉树
min1=min2=10000;//为min1和min2设置一个比所有权值都大的值
left=right=0;
for(k=1;k=i-1;k++)
{
if(ht[k].parent==0)//若是根结点
//令min1和min2为最小的两个权值,left和right为权值最小的两个结点位置
if(ht[k].weightmin1)
{
min2=min1;
right=left;
min1=ht[k].weight;
left=k;
}
else if (ht[k].weightmin2)
{
min2=ht[k].weight;
right=k;
}
}
ht[left].parent=i;
ht[right].parent=i;
ht[i].weight=ht[left].weight+ht[right].weight;
ht[i].lch=left;
ht[i].rch =right;
}
}
//构造哈夫曼编??
void HuffmanCode()
{
int i,c,k,f;
HuffCode cd;
for(i=1;i=n;i++)
{
cd.start=n;
c=i;
f=ht[i].parent;
while(f!=0)
{
if(ht[f].lch==c)
cd.bit[cd.start]=0;
else
cd.bit[cd.start]=1;
cd.start--;
c=f;
f=ht[f].parent;
}
hcd[i]=cd;
}
printf(输出哈夫曼编码:\n);
for(i=1;i=n;i++)
{
printf(%c:,ht[i].data);
for(k=hcd[i].start+1;k=n;k++)
printf(%c,hcd[i].b
您可能关注的文档
最近下载
- 2025年特许金融分析师基金会与捐赠基金知识产权货币化投资专题试卷及解析.pdf VIP
- 销售团队目标分解方法培训课件.pptx VIP
- 精神科自杀自伤应急.pptx VIP
- AI科普培训指南.pptx VIP
- 大倾角皮带机说明书.pdf VIP
- 2025版简明新疆地方史读本全册教学设计教案.docx
- 水哥割股 交割单2023.2.17—2023.10.9.xls VIP
- 甲基异丙基苯(甲基异丙苯、伞花烃)的理化性质及危险特性表.docx VIP
- GE2000系列总线式交流伺服驱动单元使用手册(2012年7月第1版)--2012-07-11定稿.pdf
- 全国农业普查农作物面积遥感测量工作实施方案.doc
原创力文档

文档评论(0)