1 / 9
文档名称:

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

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

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

分享

预览

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

上传人:1387230**** 2020/11/4 文件大小:144 KB

下载得到文件列表

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

相关文档

文档介绍

文档介绍:精品哈弗曼编码实现无损压缩实验报告院系:自动化学号:1010200249姓名:王江鹏指导老师:何新一、实验内容通过C++编程实现。要求:1)字符串的输入是手工输入的;2)通过程序实现编码,最终在屏幕上显示编码结果,例如,如果选用huffman编码,则要显示字符串的编码以及平均码长;二、源代码#include<>#include<string>#defineMAXVALUE100000#defineMAXLEAF256#defineMAXNODEMAXLEAF*2-1chara[100000]={0};intqq=0,coun=0;//qq是统计文本中有多少个不同的字符,coun是统计文本中有多少个字符floatavlen=0;/*FILE*f;-可编辑-精品f=fopen("D:\","r");*///建立文本函数voidcreat_save(){inti=0;printf("pleaseinputtext\n");gets(a);while(a[i]!=NULL){i++;coun++;}printf("coun=%d",coun);}//统计字符频率函数ints[256]={0};//s[0]到s[255]分别对应字母的ASCII码由0到255的统计个数voidcount(){-可编辑-精品inti=0,f=0;charm;while(i<coun)//不能用cout<<a;进行输出会将a的指针移动{m=0;for(intj=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树*****************************3typedefstruct{intweight;intparent;intlchild;intrchild;charnum;}HNodeType;HNodeTypeHuffNode[MAXNODE];//MAXNODE代表所有结点的个数intn;//叶子结点个数voidHuffmanTree(){inti,j,m1,m2,x1,x2;n=qq;//叶子结点的个数for(i=0;i<MAXNODE;i++){HuffNode[i].weight=0;HuffNode[i].parent=-1;HuffNode[i].lchild=-1;HuffNode[i].rchild=-1;HuffNode[i].num=-1;-可编辑-精品}//cout<<"请分别输入各个叶子结点的权值:"<<endl;j=0;for(i=0;i<256;i++){if(s[i]!=0){HuffNode[j].weight=s[i];HuffNode[j].num=i;j++;}}for(i=0;i<n-1;i++)//构造哈弗曼树{m1=m2=MAXVALUE;x1=x2=0;for(j=0;j<n+i;j++)//选取最小和次小的两个权值,其中n+i中的i代表已经多加了i个非叶子结点{if(HuffNode[j].parent==