1 / 6
文档名称:

哈弗曼编码实现无损压缩实验报告.doc

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

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

分享

预览

哈弗曼编码实现无损压缩实验报告.doc

上传人:woyaonulifacai 2021/11/2 文件大小:66 KB

下载得到文件列表

哈弗曼编码实现无损压缩实验报告.doc

相关文档

文档介绍

文档介绍:哈弗曼编码实现无损压缩实验报告
哈弗曼编码实现无损压缩实验报告
哈弗曼编码实现无损压缩实验报告
哈弗曼编码实现无损压缩实验报告
院系:自动化  学号:1010200249  姓名:王江鹏 指导老师:何新
实验内容
通过C++编程实现。
要求:1) 字符串的输入是手工输入的;
2) 通过程序实现编码,最终在屏幕上显示编码结果,例如,如果选用huffman编码,则要显示字符串的编码以及平均码长;
源代码
#include<>
#include<string〉
#define MAXVALUE 100000
#define MAXLEAF 256
#define MAXNODE MAXLEAF*2—1
char a[100000]={0};
int qq=0,coun=0;//qq是统计文本中有多少个不同的字符,coun是统计文本中有多少个字符
float avlen=0;
/*FILE *f;
f=fopen("D:\hafuman1。text","r”);
*/
//建立文本函数
void creat_save()


ﻩint i=0;
哈弗曼编码实现无损压缩实验报告
哈弗曼编码实现无损压缩实验报告
哈弗曼编码实现无损压缩实验报告
printf(”please input text\n”);
gets(a);
while(a[i]!=NULL)

ﻩ i++;
coun++;
ﻩ }
 
printf("coun=%d”,coun);
}
//统计字符频率函数
int s[256]={0};//s[0]到s[255]分别对应字母的ASCII码由0到255的统计个数
void count()
{
int i=0,f=0;
ﻩchar m;
while(i〈coun)//不能用cout<<a;进行输出会将a的指针移动
{
ﻩm=0;
ﻩ for(int j=0;a[i]!=m;j++)
m++;
ﻩ s[m]++;
i++;
ﻩ}
printf(” \n");
/*for(i=0;i<256;i++)
ﻩﻩprintf(”%3d",s[i]);*/
ﻩwhile(f!=255)
ﻩ{
ﻩif(s[f]!=0)
qq++;
ﻩﻩf++;

ﻩprintf(”\nqq=%d\n",qq);
}
//构造Huffman树*****************************3
typedef struct
哈弗曼编码实现无损压缩实验报告
哈弗曼编码实现无损压缩实验报告
哈弗曼编码实现无损压缩实验报告
{
ﻩint weight;
int parent;
int lchild;
int rchild;
ﻩchar num;
}HNodeType;
HNodeType HuffNode[MAXNODE];//MAXNODE代表所有结点的个数
int n;//叶子结点个数
void HuffmanTree()
{
ﻩint i,j,m1,m2,x1,x2;