ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:220.96KB ,
资源ID:13477636      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13477636.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构哈夫曼树编码译码实验报告Word文档下载推荐.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构哈夫曼树编码译码实验报告Word文档下载推荐.docx

1、bcde,此容可以放入结点中,不单独设数组存放 int LeafNum; /哈夫曼树的叶子个数,也是源码个数public: HuffmanTree(); HuffmanTree(); void CreateHuffmanTree(); /*在存中建立哈夫曼树,存放在Node中。 让用户从两种建立哈夫曼树的方法中选择: 1.从键盘读入源码字符集个数,每个字符,和每个字符的权重,建立哈夫曼树, 并将哈夫曼树写入文件hfmTree中。2.从文件hfmTree中读入哈夫曼树信息,建立哈夫曼树*/ void CreateHuffmanTreeFromKeyboard(); void CreateHuff

2、manTreeFromFile(); void Encoder(); /*使用建立好的哈夫曼树(如果不在存,则从文件hfmTree中读入并建立存里的哈夫曼树), 对文件ToBeTran中的正文进行编码,并将码文写入文件CodeFile中。 ToBeTran的容可以用记事本等程序编辑产生。*/ void Decoder(); /*待译码的码文存放在文件CodeFile中,使用建立好的哈夫曼树(如果不在存, 则从文件hfmTree中读入并建立存里的哈夫曼树)将码文译码, 得到的源文写入文件TextFile中,并同时输出到屏幕上。*/ void PrintCodeFile(); /*将码文文件Cod

3、eFile显示在屏幕上*/ void PrintHuffmanTree(); /*将哈夫曼树以直观的形式(凹入表示法,或广义表,或其他树形表示法)显示在屏幕上, 同时写入文件TreePrintFile中*/ void PrintHuffmanTree_aoru(int T,int layer=1); /*凹入表示法显示哈夫曼树,由PrintHuffmanTree()调用*/HuffmanTree.cpplimits /为使用整型最大值#includeHuffmanTree.husing namespace std;/*HuffmanTree:HuffmanTree() Node=NULL;Hu

4、ffmanTree() deleteNode;void HuffmanTree:CreateHuffmanTree() char Choose; coutChoose; if(Choose=2) /键盘输入建立哈夫曼树 CreateHuffmanTreeFromKeyboard(); /choose= else /从哈夫曼树文件hfmTree.dat中读入信息并建立哈夫曼树 CreateHuffmanTreeFromFile(); CreateHuffmanTreeFromKeyboard() int Num; coutNum; if (Num=1) cout无法建立少于2个叶子结点的哈夫曼树

5、。nn return; LeafNum=Num; Node=new HuffmanNode2*Num-1; Info=new char2*Num-1; for(int i=0;ii+) /读入哈夫曼树的叶子结点信息请输入第i+1Nodei.weight; /源文的字符权重存入Node.weight Nodei.parent=-1; Nodei.lchild=-1; Nodei.rchild=-1; for(i=Num;2*Num-1;i+) /循环建立哈夫曼树部结点 int pos1=-1,pos2=-1; int max1=32767,max2=32767; for(int j=0;ji;j

6、+)/在根节点中选出权值最小的两个 if(Nodej.parent=-1)/是否为根结点 if(Nodej.weightmax1) max2=max1; max1=Nodej.weight; pos2=pos1; pos1=j; else if(Nodej.weightmax2) max2=Nodej.weight; pos2=j; Nodepos1.parent=i; Nodepos2.parent=i; Nodei.lchild=pos1; Nodei.rchild=pos2; Nodei.weight=Nodepos1.weight+Nodepos2.weight; /for哈夫曼树已成

7、功构造完成。n /把建立好的哈夫曼树写入文件hfmTree.dat char ch;是否要替换原来的哈夫曼树文件(Y/N):ch; if (ch!=y&ch!Y) return; else ofstream fop; fop.open(hfmTree.dat,ios:out|ios:binary|ios:trunc); /打开文件 if(fop.fail() coutn哈夫曼树文件打开失败,无法将哈夫曼树写入hfmTree.dat文件。 fop.write(char*)&Num,sizeof(Num); /先写入哈夫曼树的叶子结点个数 for(i=0;i+) /再写入源文字符集的所有字符(存储

8、在Info中) fop.write(char*)&Infoi,sizeof(Infoi); flush(cout); /最后写入哈夫曼树的各个结点(存储在Node中)Nodei,sizeof(Nodei); fop.close(); /关闭文件n哈夫曼树已成功写入hfmTree.dat文件。CreateHuffmanTreeFromFile() ifstream fip; fip.open(in); if(fip.fail() 哈夫曼树文件hfmTree.dat打开失败,无法建立哈夫曼树。 return; fip.read(char*)&LeafNum,sizeof(LeafNum); if

9、(LeafNum=1) 哈夫曼树文件中的数据有误,叶子结点个数少于2个,无法建立哈夫曼树。 fip.close(); Info=new charLeafNum; Node=new HuffmanNode2*LeafNum-1; for(int i=0;LeafNum; fip.read(char*)& for(i=0;2*LeafNum-1; fip.close();Encoder() if(Node=NULL) /存没有哈夫曼树,则从哈夫曼树文件hfmTree.dat中读入信息并建立哈夫曼树 if (LeafNum存无哈夫曼树。操作撤销。 /if char *SourceText; /字符串数组,用于存放源文 /让用户选择源文是从键盘输入,还是从源文文件ToBeTran.txt中读入你要从文件中读入源文(按1),还是从键盘输入源文(按2)?1) ifstream fi

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1