文档介绍::..哈夫曼树及其的应用一、,掌握对二叉树的一些其它操作的具体实现方法。。(最优二叉树)特征及其应用二、 实验内容题目一、哈夫曼树和哈夫曼编码:从终端输入若干个字符,统计(或指定)字符出现的频率,将字符出现的频率作为结点的权值,建立哈夫曼树,然后对各字符进行哈夫曼编码。最后打卬哈夫曼树和对应的哈夫曼编码。设计要求:⑴哈夫曼殊和哈夫曼编码的存储表示参考教材事例⑵在程序中构造四个子程序为①intfreqchar(charnext,HTree*t) //统计字符出现的频率②intcreatehtree(HTree*t)//根据字符出现的频率建立哈夫曼树③voidcoding(HTree*t,intheadi,char*code)//对哈夫曼树进行编码④voidprinthtree(IITree*t,inthead_i,intdeep,int*path)///中序打印树三、 实验步骤㈠、数据结构与核心算法的设计描述voidFrequent()//计算输入字母出现的频率voidSelect(HuffmanTreeI1T,inti,int&si,int&s2)//选择函数voidHuffmanCoding(HuffmanTree&HT,HuffmanCode&HC,int*w,intn)//w存放ri个权值,构造哈夫曼树p,并求出哈夫曼编码he并输出哈弗曼编码㈡、函数调用及主函数设计㈢程序调试及运行结果分析首先调用Frequent(),计算输入字母出现的频率,输入一串字符串,并以字符#号结束,运行结果如下:然后根据输入字符的个数与岀现的频率输入哈弗曼所要编码的个数,然后输入这儿个字母的权值,即出现的频率,运行结果如下:Tj"C:\Users\Administrator\Desktop\IX^115张201100834502\Debug\"请输入各个字符(abbbdbbdbdb#a4b11:4:11S=5ightM辐岀各个兀畫敢HT[=11输塀个元素白HT[3].weight=5输岀各个元素的HT[4].weight=6 Li_ 蠶趣夫塹的元素个数:,哈弗曼树农以及哈弗曼编码,结果如下:哈弗曼树表■1weightparentlchildrchiId14500211700355004660059613615745?26026哈夫曼编码如下:HTtl]〒点賊未曼遍码<:110HTE2J〒点卸哈走曼0HTE3J下点够哈未曼缢码畀111HTL4JT点的哈夫曼10Pressanykeytocontinue㈣实验总结通过这次实验使我掌握了哈夫曼树与哈夫曼码的转换。其中就是要求的函数不能正确的写出来,这次没按照实验要求的函数写,弄了很长时间也没弄出來,就这样把几个函数放在一起啦。四、主要算法流程图及程序清单1、主要算法流程图:2、程序清单#include<>#include<iomanip・h>#include<>#include<string・h>#include<stdi