1 / 10
文档名称:

哈弗曼树实验报告.doc

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

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

分享

预览

哈弗曼树实验报告.doc

上传人:012luyin 2016/4/21 文件大小:0 KB

下载得到文件列表

哈弗曼树实验报告.doc

文档介绍

文档介绍:实验四哈夫曼树及其的应用一、实验目的 1. 在二叉树基本操作的基础上,掌握对二叉树的一些其它操作的具体实现方法。 。 3、熟练掌握哈夫曼树(最优二叉树)特征及其应用。二、实验内容题目一、哈夫曼树和哈夫曼编码: 从终端输入若干个字符,统计(或指定)字符出现的频率,将字符出现的频率作为结点的权值,建立哈夫曼树,然后对各字符进行哈夫曼编码。最后打印哈夫曼树和对应的哈夫曼编码。设计要求: ⑴哈夫曼殊和哈夫曼编码的存储表示参考教材事例⑵在程序中构造四个子程序为①int freqchar (char *text, HTree *t) /*统计字符出现的频率*/ ②int createhtree(HTree *t) /*根据字符出现的频率建立哈夫曼树*/ ③void coding(HTree *t,int head_i,char *code) /*对哈夫曼树进行编码*/ ④void printhtree(HTree *t,int head_i,int deep,int* path) /*中序打印树*/ 三、演示演示如下: 四、数据结构与核心算法的设计描述 1,主函数:void main() {Type type[27]; int sort=0; for(int i=0;i<27;i++) {type[i].num=0; type[i].flag=true; }//type[0] 储存字符总数 freqchar(type,sort); for(int j=1;j<=sort;j++) {cout<<type[j].ch<<":"<<type[j].num<<endl; }HTree t=new node; char *code="0"; createhtree(t,type); coding(t,code); printhtree(t); }2、数据结构 struct Type {int num; char ch; bool flag;// 储存结构体是否被筛选过; };typedef struct node {struct node *parent,* Lchild, *Rchild; int weight; char ch; }HTnode,*HTree; //结点类型//建立哈夫曼树 3、主要函数(1)统计字符出现的频率 void freqchar(Type *type,int &sort) /*统计字符出现的频率*/ {cout<<" 请输入各个字符(输入@结束输入) "<<endl; char c; for(;;) {bool flag=false; cin>>c; if(c=='@') break; for(int j=1;j<=sort;j++) {if(type[j].ch==c) {type[j].num++; type[0].num++; flag=true; break; }}if(flag==false) {type[sort+1].ch=c; type[sort+1].num++; sort++; type[0].num++; }}}(2)选取最小值 int selete(Type *type)// 选取最小值{int a=0,b=0; for(int i=1;i<=27;i++) {if(type[