1 / 16
文档名称:

c 数据结构实验哈夫曼树.docx

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

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

分享

预览

c 数据结构实验哈夫曼树.docx

上传人:glfsnxh 2019/9/5 文件大小:262 KB

下载得到文件列表

c 数据结构实验哈夫曼树.docx

文档介绍

文档介绍::掌握二叉树基本操作的实现方法掌握二叉树基本操作的实现方法了解哈夫曼树的思想和相关概念学习使用二叉树解决实际问题的能力熟悉C++语言的基本编程方法,掌握集成编译环境的调试方法,熟练改错方法。熟悉设计算法的过程进一步掌握指针、异常处理的使用实验内容:利用二叉树结构实现赫夫曼编/解码器。基本要求:初始化(Init):能够对输入的任意长度的字符串s进行统计,统计每个字符的频度,并建立赫夫曼树建立编码表(CreateTable):利用已经建好的赫夫曼树进行编码,并将每个字符的编码输出。编码(Encoding):根据编码表对输入的字符串进行编码,并将编码后的字符串输出。译码(Decoding):利用已经建好的赫夫曼树对编码后的字符串进行译码,并输出译码结果。打印(Print):以直观的方式打印赫夫曼树(选作)计算输入的字符串编码前和编码后的长度,并进行分析,讨论赫夫曼编码的压缩效果。测试数据:IlovedataStructure,:1、用户界面可以设计为“菜单”方式:能够进行交互。2、根据输入的字符串中每个字符出现的次数统计频度,对没有出现的字符一律不用编码。代码要求:1、必须要有异常处理,比如删除空链表时需要抛出异常;2、保持良好的编程的风格:代码段与段之间要有空行和缩近标识符名称应该与其代表的意义一致函数名之前应该添加注释说明该函数的功能关键代码应说明其功能3、递归程序注意调用的过程,,二叉树是每个结点最多两个子树的有序树,十分适合计算机处理问题,而哈夫曼树是一种特殊的二叉树,它将权值大的数据放在了离根较近的结点处,这样使得带权路径长度最短,是非常好的存储方式。:根(下面结点的父结点)结点:左孩子右孩子 ……structhnode//哈夫曼树结点的结构体{ intweight; intparent; intlchild; intrchild; chardata;};结点存储示意图::Structhcode//编码表结构体{ chardata;//字符 charcode[100];//编码内容};示意图为:chardatacharcode[100]:structnode{ intnum; chardata;};intnumchardata关键算法分析: A)Init初始化:统计需要编码的字符串中每个字符的频度并建立哈夫曼树实现:在函数中设置了一个数组type用来统计字符串中字符的类型,no数组则用于统计每种字符串的个数,count用于存储每类字符的相应的个数。voidHuffman::Init()//将输入的数据保存至类中{ cout<<"请输入需要编译压缩的内容"<<endl; (in,500,'\n'); n=0; no=0; count=newnode[127];//type for(intj=0;j<127;j++)//对每一种字符的个数进行初始化 { count[j].num=0; } while(in[no]!='\0')//结束之前,每输入一个字符,则对应的数目增1 { ++count[in[no]].num; count[in[no]].data=in[no]; ++no; } for(intk=0;k<127;k++) { if(count[k].num>0) { n++; cout<<count[k].data<<count[k].num<<endl; } }}将初始化的数据用于建立哈夫曼树:voidHuffman::createht(){ no=0; htree=newhnode[2*n-1];//含有n种字符的哈夫曼树需要2*n-1个结点 for(inti=0;i<n;i++) { while(count[no].num==0)//该字符没有出现,跳过,继续找出现过的字符{ no++; } htree[i].weight=count[no].num;//将count里统计的次数传入哈夫曼树的节点中,作为字符权重 htree[i].lchild=-1; htree[i].rchild=-1; htree[i].parent=-1;//将左右孩子结点和父节点都置空 htree[i].data=count[no].data;//将字符传入哈夫曼树的结点 no++; } intx=-1,y=-1; for(i

最近更新

2025年松原职业技术学院单招职业适应性测试题.. 44页

2025年武夷山职业学院单招职业适应性测试题库.. 44页

2025年武胜县幼儿园教师招教考试备考题库附答.. 31页

2025年永泰县招教考试备考题库含答案解析(夺.. 30页

2025年江苏大学京江学院马克思主义基本原理概.. 12页

2025年江西卫生职业学院马克思主义基本原理概.. 13页

2025年江西科技学院单招职业技能考试题库附答.. 44页

2025年沈阳职业技术学院单招职业倾向性考试题.. 44页

2025年河北经贸大学马克思主义基本原理概论期.. 13页

2025年河南省省直辖行政单位单招职业倾向性考.. 44页

2025年浑源县招教考试备考题库及答案解析(必.. 31页

2025年浙江经济管理职工大学马克思主义基本原.. 12页

2025年海南职业技术学院马克思主义基本原理概.. 12页

2025年渭南职业技术学院单招综合素质考试题库.. 45页

2025年湖南城建职业技术学院单招职业技能考试.. 43页

2025年滁州城市职业学院单招综合素质考试题库.. 44页

2026年主管中药师考试备考题100道及答案【最新.. 38页

2026年医学微生物学习题集及答案(典优) 40页

2025年皖南医学院马克思主义基本原理概论期末.. 12页

2025年聊城大学东昌学院马克思主义基本原理概.. 12页

2026年网络安全知识竞赛题库附答案【考试直接.. 40页

小学历史与文化知识竞赛题库100道及答案(夺冠.. 37页

小学历史与文化知识竞赛题库100道附答案【突破.. 37页

2025年辽宁机电职业技术学院单招职业适应性测.. 42页

最新全国政法队伍教育整顿知识竞赛试题库及答.. 40页

2025年金陵科技学院马克思主义基本原理概论期.. 12页

2025年韶关市职工大学马克思主义基本原理概论.. 13页

2026年主管中药师考试备考题100道含答案(巩固.. 38页

2026年医学微生物学习题集【原创题】 40页

2026年中医住培带教师资理论考核题库100道含完.. 39页