1 / 18
文档名称:

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

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

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

分享

预览

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

上传人:luciferios02 2019/9/24 文件大小:317 KB

下载得到文件列表

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

相关文档

文档介绍

文档介绍:c++数据结构实验哈夫曼树————————————————————————————————作者:————————————————————————————————日期: :掌握二叉树基本操作的实现方法掌握二叉树基本操作的实现方法了解哈夫曼树的思想和相关概念学习使用二叉树解决实际问题的能力熟悉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;//将左

最近更新

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

最新煤气操作证考试题100道含完整答案(名师系.. 39页

嵌入并联压电执行机构的空间柔性结构振动抑制.. 7页

2025年医疗服务项目发展计划 62页

2025年光致抗蚀剂项目建议书 70页

2025年初等教育服务项目合作计划书 78页

联盟耗材集采“玩法”升级:5类耗材纳入国产品.. 6页

2025年神木职业技术学院单招职业技能测试模拟.. 42页

科技共情:我国科技期刊数字化传播的多媒体叙.. 37页

2025年重庆医药高等专科学校单招职业适应性测.. 44页

2025年长春东方职业学院单招职业倾向性考试题.. 44页

2025年黔西南民族职业技术学院单招综合素质考.. 43页

2025广东江门开平市公用事业集团有限公司招聘.. 47页

2025浙江嘉兴市博思睿人力招聘2人(派遣至海宁.. 44页

2025青海黄南州同仁市司法局面向全市招录1人参.. 47页

2026内蒙古自治区到武汉大学定向选调(选聘).. 50页

2026年(完整版)C语言试题(模拟题) 13页

2026年c语言考期末试题及答案(易错题) 13页

2026年专升本C语言真题及一套参考答案 13页

2026年云南工程职业学院单招职业适应性考试题.. 44页

2026年内蒙古民族幼儿师范高等专科学校单招职.. 45页

2026年四川华新现代职业学院单招职业倾向性考.. 45页

2026年广东环境保护工程职业学院单招职业适应.. 43页

2026年池州青阳县急需紧缺人才引进10名参考题.. 51页

2025交通运输部所属事业单位第七批统一招聘10.. 18页

2026年江西交通职业技术学院单招职业倾向性考.. 37页

2025年新疆考试录用公务员《公安专业科目》真.. 30页

2024年南京信息职业技术学院单招职业技能测试.. 78页

CFG群桩基础土方开挖施工方案 6页

全国大学生智能车大赛作品-智能循迹小车技术文.. 31页