2023年数据结构哈夫曼编码实验报告.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构实验报告 一一实验五简朴哈夫曼编/译码的设计与实现 本实验的目的是通过对简朴哈夫曼编/译码系统的设计与实现来纯熟掌握树型结构在实际问题中的应用。此实验可以作为综合实验,阶段性实验时可以选择其中的几 个功能来设计和实现。 一、【问题描述】。运用哈夫曼编码进行通信可以大大提高信道运用率,缩短信息传输时间,减少传输成本。但 是,这规定在发送端通过一个编码系统对待传数据预先编码,在接受端将传来的数据进行译码, 此实验即设计这样的一个简朴编/码系统。系统应当具有如下的几个功能: 1、接受原始数据。 。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文献n o de d a ta.da t 中。 。2、编码。 运用已建好的哈夫曼树(如不在内存,则从文献nod e da t a .dal中读入),对文献中的 正文进行编码,然后将结果存入文献co de.dat中。 。3、译码。运用已建好的哈夫夏树将文献code.dal中的代码进行译码,结果存入文献lexlfile.dat 中。 4、打印编码规则。 即字符与编码的一一相应关系。 二、【数据结构设计】。1、构造哈夫曼树时使用静态链表作为哈夫曼树的存偌。 。在构造哈夫曼树时,设计一个结构体数组HuffN o de保存哈夫曼树中各结点的信息,根据二 又树的性质可知,具有n个叶子结点的哈夫曼树共有2n-l个结点,所以数组Huf fNode 的大小设立为2n-l,描述结点的数据类型为: t yp e def st r u c I? for(j=H a ffCo d e [i] .start+l;jn; j++) 00 outf i lei. write ((char* ) Ha f fC o de[i] .bit[j],size o f(Ha f fCo d e[i].bit[ j ]));。8。cou t?Ha f f C o de[ i ].bi t [j]; 0 )° } }° }c out? e ndl; 。co utV”编译后的代码串已经存入co de. da t文献中! Vendl;couten d 1; outfile 1. clos e ();dele t e []H a ffNo d e ; delete [] HaffC o de;1 void decode( int n) //解码( in t i ; HNod e Ty p e *11 affNod e =ne w IINodeType[2 * n-1 ]; fstr e am i n file 1 ;oi n filel. o p en ( E: \ \ n o ded a ta.dat ,io s ::in| i os:: bi n ary);//读出哈夫 曼树 oi f (!infi 1 e 1 )c o ut * nodedat a . d a t 文献不能打开V V e n d 1; g a b o rt(); }。 of o r(i= 0 ; i 2*n— l;i++) n f i le 1 .read((char*)HaffNod e [ i ],sizeof(HNo d eTy p e ));A n filel. c lose(); i nt lem p c ode[ 1 0 0 ];◎in t num=0; for(i=0; i 100;i++)tempo o de[ i ] =-l; 0H c odeT y pe *C o d e=new HcodeType[n]; f st r e a m i nf i le2;〃读编码o i n file2.open(E: Wcode.dat, ios:: i n|i o s :: binary); while(!infil e 2. e of()) infi 1 e 2. r ead(( char *) t empco d e [num], s i zeof(tempcode [n u m]));oonum++; } i n file2.close();叫 u m—; 。c o u从文献中读出的编码为 endl; for (i= 0 ;inum; i ++) cout?tempcode[i ]; cout?end 1 ; int m=2*n-2; i= 0 ; c o u ten d 1 ; co u K 译码后为: e ndl; f s tr e am out file; out file.open ( E :\\textfile.tx t H,io s :: out); i f (! o utf i 1 e) (cout? tex tfilc.txt 文献不能打开!VVendl; a b or t (); ) w h ile (

文档评论(0)

scj1122115 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6203112234000004

1亿VIP精品文档

相关文档