- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
赫夫曼树编码代码绝对可用
赫夫曼树的设计思路及代码网上的很多代码用起来都会出现问题,下面的代码确实可以使用,只需要新主函数和头文件,注意:这是在vc6.0下编译的,不同的编译器效果可能不同。然后/***/里面的内容按照提示复制到相应的主函数或者头文件就可以了就可以了。下面附上设计思路和效果图(最后面可以联系我1651901588)。一:实验分析 赫夫曼树又称最优树,在电文的传输过程中我们总是想提高电文的传输效率,我们可以根据电文中字幕出现的概率来对电文是现编码;赫夫曼树的构建过程是假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和; (3)从森林中删除选取的两棵树,并将新树加入森林; (4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树二:系统分析 我写的代码分为以下几个部分: 1,select()函数的作用是从权值中选出最小的两个权值 2,createhfmtree()的作用是构建并初始化一个赫夫曼树 3,createhfmcode()的作用是对一颗赫夫曼树进行初始化 4,bianma()的作用是把输入的字符串转化成0/1码 5,yima()函数的作用是把0/1码传换成字符串 6,jiemian()的作用是显示提示和调用之前定义的函数Select()的设计思路 我先在输入的节点中用for循环中,找到一个没有双亲节点的节点,然后用for循环找出最小的一个,然后再用for循环找出最小的一个权值的编号,然后再用for循环找出不等于第一个去找权值的节点的编号;Cretehfmtree()函数的设计思路首先我们对钱n个节点进行权值的赋值,我们再输入权值后,然后对赫夫曼树构建的总结点2n-1个节点进行初始化,没有的权值我们要赋值为0,然后再调用前面的select函数选出最小的两个节点多次循环后赫夫曼树构建完成;Createhfmcode()的设计思路 因为我们之前已经设计了赫夫曼树,现在我们开始对赫夫曼树进行编码的工程,我们要编码的是n个子叶节点,我们从第一个节点开始编码,如果我们发现这个节点是这个节点双亲的的左孩子,如果是的话,我们就赋值为0,否则的话就复制为1,直到所有的节点构建完成;bianma()的设计思路 我们对输入的字符串进行编码的时候,要根据构建好的赫夫曼树进行编码,编码的时候,先按顺序在字符串中选出一个字符,从子叶节点开始找,如果找到了就输出这个节点对对应的赫夫曼编码,然后换下一个,直到一串字符串编码完成;Yima()的设计思路 我们对输入的0/1字符串在译码的时候要从根节点开始译码,译码的时候遇见0就找他的左孩子,遇见1就找他的右孩子,直到找到一个节点,这个节点没有左孩子,也没有右孩子,输出这个节点的字符,知道代码译码完成;Jiemian()的设计思路我们在界面函数中提示调用命令,然后调用随影的函数;知道函数执行完成; 开始界面三;流程图 Select()选出两个最小的权值的节点 不断地反复调用,直到赫夫曼树构建完成调用前面的函数,构建和初始化赫夫曼树,知道赫夫曼树构建完成结束赫夫曼树的编码构件的初始化译码函数译码函数译码结果编码结果开始调用界面函数四:试验执行效果图 /************这是主函数部分*******************************************/ #includeiostream#includestdlib.h#includestring.h#includemalloc.husing namespace std;#define ERROR 0#define OK 1int tn;typedef int Status;#includefujian.hint main(){ hfmtree HT; hfmcode HC; jiemian(HT,HC); return 0;}/*******************主函数部分结束***********************************//**********************这是头文件*****************************************/typedef struct HTNode{//赫夫曼树结构体定义char c;int weight;int parent,lchild,rchild;}HTNode,*hfmtree;typedef char **hfmcode;/**********************************
您可能关注的文档
- 计高072班网络专题复习3.doc
- 论文样本2.doc
- 记忆钥匙教案.doc
- 论文检索标准.doc
- 论文素材读后活动.docx
- 论斯嘉丽的性格分析(英文论文).doc
- 论文英汉习语的文化差异与翻译.doc
- 论文--浅谈企业质量管理.doc
- 论李清照词的抒情性.doc
- 论清廉品行的养成和坚守.doc
- GB/T 39560.10-2024电子电气产品中某些物质的测定 第10部分:气相色谱-质谱法(GC-MS)测定聚合物和电子件中的多环芳烃(PAHs).pdf
- 中国国家标准 GB/T 39560.10-2024电子电气产品中某些物质的测定 第10部分:气相色谱-质谱法(GC-MS)测定聚合物和电子件中的多环芳烃(PAHs).pdf
- 《GB/T 39560.10-2024电子电气产品中某些物质的测定 第10部分:气相色谱-质谱法(GC-MS)测定聚合物和电子件中的多环芳烃(PAHs)》.pdf
- GB/T 39560.302-2024电子电气产品中某些物质的测定 第3-2部分:燃烧-离子色谱法(C-IC)筛选聚合物和电子件中的氟、氯和溴.pdf
- 中国国家标准 GB/T 39560.2-2024电子电气产品中某些物质的测定 第2部分:拆解、拆分和机械制样.pdf
- 中国国家标准 GB/T 39560.302-2024电子电气产品中某些物质的测定 第3-2部分:燃烧-离子色谱法(C-IC)筛选聚合物和电子件中的氟、氯和溴.pdf
- GB/T 39560.2-2024电子电气产品中某些物质的测定 第2部分:拆解、拆分和机械制样.pdf
- 《GB/T 39560.2-2024电子电气产品中某些物质的测定 第2部分:拆解、拆分和机械制样》.pdf
- 《GB/T 39560.303-2024电子电气产品中某些物质的测定 第3-3部分:配有热裂解/热脱附的气相色谱-质谱法(Py/TD-GC-MS)筛选聚合物中的多溴联苯、多溴二苯醚和邻苯二甲酸酯》.pdf
- 中国国家标准 GB/T 39560.303-2024电子电气产品中某些物质的测定 第3-3部分:配有热裂解/热脱附的气相色谱-质谱法(Py/TD-GC-MS)筛选聚合物中的多溴联苯、多溴二苯醚和邻苯二甲酸酯.pdf
文档评论(0)