哈弗曼树实验报告.doc

哈弗曼树实验报告.doc

ID:50121307

大小:55.00 KB

页数:9页

时间:2020-03-05

哈弗曼树实验报告.doc_第1页
哈弗曼树实验报告.doc_第2页
哈弗曼树实验报告.doc_第3页
哈弗曼树实验报告.doc_第4页
哈弗曼树实验报告.doc_第5页
资源描述:

《哈弗曼树实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、哈夫曼树及其的应用一、实验目的1.在二叉树基本操作的基础上,掌握对二叉树的一些其它操作的具体实现方法。2.掌握构造哈夫曼树以及哈夫曼编码的方法。3、熟练掌握哈夫曼树(最优二叉树)特征及其应用二、实验内容题目一、哈夫曼树和哈夫曼编码:从终端输入若干个字符,统计(或指定)字符出现的频率,将字符出现的频率作为结点的权值,建立哈夫曼树,然后对各字符进行哈夫曼编码。最后打印哈夫曼树和对应的哈夫曼编码。设计要求:⑴哈夫曼殊和哈夫曼编码的存储表示参考教材事例⑵在程序中构造四个子程序为①intfreqchar(char*text,HTree*t)//统计字符出现的频率②intcreate

2、htree(HTree*t)//根据字符出现的频率建立哈夫曼树③voidcoding(HTree*t,inthead_i,char*code)//对哈夫曼树进行编码④voidprinthtree(HTree*t,inthead_i,intdeep,int*path)///中序打印树三、实验步骤㈠、数据结构与核心算法的设计描述voidFrequent()//计算输入字母出现的频率voidSelect(HuffmanTreeHT,inti,int&s1,int&s2)//选择函数voidHuffmanCoding(HuffmanTree&HT,HuffmanCode&HC,i

3、nt*w,intn)//w存放n个权值,构造哈夫曼树p,并求出哈夫曼编码hc并输出哈弗曼编码㈡、函数调用及主函数设计主函数Frequent()计算输入字母出现的频率Select(HuffmanTreeHT,inti,int&s1,int&s2)选择函数HuffmanCoding(HuffmanTree&HT,HuffmanCode&HC,int*w,intn)构造哈夫曼树p,并求出哈夫曼编码hc打印哈弗曼树表㈢程序调试及运行结果分析首先调用Frequent(),计算输入字母出现的频率,输入一串字符串,并以字符#号结束,运行结果如下:然后根据输入字符的个数与出现的频率输入哈

4、弗曼所要编码的个数,然后输入这几个字母的权值,即出现的频率,运行结果如下:然后输出哈弗曼树的建立次序,哈弗曼树表以及哈弗曼编码,结果如下:㈣实验总结通过这次实验使我掌握了哈夫曼树与哈夫曼码的转换。其中就是要求的函数不能正确的写出来,这次没按照实验要求的函数写,弄了很长时间也没弄出来,就这样把几个函数放在一起啦。四、主要算法流程图及程序清单1、主要算法流程图:主函数开始界面统计频率构造哈夫曼树p输出哈夫曼编码打印哈弗曼树表选择函数主函数输出数据结束2、程序清单#include#include#include#

5、include#include#definemaxsize100structfrequence//统计频率{chara;//存放字符intn;//该字符出现的次数};typedefstruct{unsignedintweight;//用来存放各个结点的权值unsignedintparent,lchild,rchild;//指向双亲、孩子结点的指针}HTNode,*HuffmanTree;//动态分配数组存储赫夫曼树typedefchar**HuffmanCode;//动态分配数组存储赫夫曼编码表voidFrequent(){frequ

6、encech[27];//26个英文字母,0号位置不存储字符,用来存储总共的字符个数,多次出现的只记一次inti=0;for(;i<=26;i++)//初始化结构体数组{ch[i].n=0;}cout<<"请输入各个字符(输入#键结束输入):";charc;cin>>c;boolflag;while(c!='#'){i=1;flag=false;for(;i<=ch[0].n;i++){if(c==ch[i].a){flag=true;break;}}if(flag)//已存在{ch[i].n++;}else//不存在{ch[0].n++;ch[ch[0].n].n++;

7、ch[ch[0].n].a=c;}cin>>c;}for(intj=1;j<=ch[0].n;j++){cout<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。