1 / 6
文档名称:

哈夫曼编码解码实验报告.doc

格式:doc   大小:36KB   页数:6页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

哈夫曼编码解码实验报告.doc

上传人:tswng35 2022/7/31 文件大小:36 KB

下载得到文件列表

哈夫曼编码解码实验报告.doc

相关文档

文档介绍

文档介绍:-
. z.
哈夫曼编码解码实验
实验要求
掌握二叉树的相关概念
掌握构造哈夫曼树,进展哈夫曼编码。
对编码容通过哈夫曼树进展解码。
实验容
通过二叉树构造哈夫曼树,并用rintf("%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].weight<min1)
{
min2=min1;
right=left;
min1=ht[k].weight;
left=k;
}
else if (ht[k].weight<min2)
-
. z.
{
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++)
{
=n;
c=i;
f=ht[i].parent;
while(f!=0)
{
if(ht[f].lch==c)
[]='0';
else
[]='1';
--;
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].bit[k]);
printf("\n");
}
}
//对字母进展编码
-
. z.
void Code()//将字符与相应的哈夫曼编码进展匹配,输出编码结果
{
int i=0,j,k,h=0;
while(te*t[i]!='\0')
{
for(j=1;j<=n;j++)
{
if(te*t[