下载此文档

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


文档分类:通信/电子 | 页数:约9页 举报非法文档有奖
1/9
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/9 下载此文档
文档列表 文档介绍
哈夫曼编码解码实验
实验要求
掌握二叉树的相关概念
掌握构造哈夫曼树,进行哈夫曼编码。对编码容通过哈夫曼树进行解码。
实验容
通过二叉树构造哈夫曼树,并用哈夫曼树对读取的 txt 文件进行哈夫曼编码。编码完成后通过哈夫曼树进行解码。
#include<> #include<> #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(;j<127;j++)
{
if(Coun[j]!=0)
{
}
}
j++;
}
ht[i].data=j;
//printf("%c",ht[i].data); ht[i].weight=Coun[j];
//printf("%d",ht[i].weight);
break;
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;
}
e

哈夫曼编码解码实验报告 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数9
  • 收藏数0 收藏
  • 顶次数0
  • 上传人传媒天下
  • 文件大小657 KB
  • 时间2021-01-19
最近更新