




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构的课程设计报告题目:Huffman编码与解码 班级: 1612401 学号: 161240113 姓名: 张修鸣 指导老师: 孙涵 完成日期: 2014.1.3 目 录一.需求分析.二.程序主要功能.三.程序运行平台.四.程序类说明.五. 模块分析.六. 存在的不足与对策.七体验感悟八. 程序源代码.需求分析对一篇英文文章(大于2000个英文字符),统计各字符出现的次数,实现Huffman编码,以及对编码结果的解码。程序主要功能(1) 输出每个字符出现的次数和编码,其中求最小权值要求用堆实现。(2) 在Huffman编码后,要将编码表和英文文章编码结果保存到文件中,编码结果必须是二进制
2、形式,即0 1的信息用比特位表示,不能用字符0和1表示。(3) 提供读编码文件生成原文件的功能。程序运行平台该程序是用VC+6.0制做的,使用Microsoft Visual C+ 6.0运行该程序,具体操作是:打开Microsoft Visual C+ 6.0,菜单栏里点文件打开工作区找到“图书管理系统.dsw”这个文件打开,或者在资源管理器中双击该文件,此时,VC+6.0会自动打开,并载入该系统相关资源,点击Run命令菜单或者或用快捷键Ctrl+F5运行该程序。trl计分析能程序类说明二叉树类记录typedef structint weight,flag,parent;char c;int
3、 lchild,rchild;hnodetype;赫夫曼类typedef structint Bit3000;int Start;hcodetype;函数分析:void create(int T) 创建二叉树void Visit(int i,int n) 显示元素的权值int IN(int i,int n) 中序遍历void htree() 赫夫曼解码模块分析我设计的系统,主要分为两大模块 1编码模块 2解码模块该系统主要完成以下功能:编码模块: 1 从文章中读取信息 2 构建赫夫曼树 3 进行赫夫曼编码并保存在文件中解码模块: 1 从文件中读取赫夫曼码 2 进行解码 3保存在文件中文章信息元
4、素权值赫夫曼解码结果存在的不足与对策由于自身能力有限,所以没有起到真正的压缩文件的功能。在设计过程中由于设计者的编程功底欠缺,因此学习过程较为艰辛,需要解决的问题也比较多。在以后的学习中,应该循序渐进,不可急于求成,先打好基础,这样才能更好地发展。体验感悟在编写程序的过程中,深切的体会到自身能力还有待提高,通过大规模的查询网上资料与相关书籍我学习到了很多以前不知道的编程方法与各种奇妙的函数语句时,提高了自己对程序设计本身的兴趣,更加乐意去学习这方面的新的东西,并在不断地自我挑战中收获着,或知识技能,或信心勇气。希望自己在今后的学习中可以更好的完善自我。程序源代码#include<iost
5、ream>#include<stdio.h>#include"math.h"#include <fstream>using namespace std; typedef structint weight,flag,parent;char c;int lchild,rchild;hnodetype;typedef structint Bit3000;int Start;hcodetype;hnodetype Huffnode100,Htree100;hcodetype Huffcode100,cd,Ctree2000; int w29;void
6、create(int T)char c;int m=0;fstream fp;fp.open("a.txt",ios:in);if(fp.fail()cout << "文件打开失败!n"exit(0);while(!fp.eof()fp.get(c);if(c<='z'&&c>='a')Tc-'a'+;if(c<='Z'&&c>='A')Tc-'A'+;if(c='n')T26
7、+;if(c=',')T27+;if(c='.')T28+;fp.close();void Visit(int i,int n) if(i<n) cout<<"元素 "<<Huffnodei.c<<"权值 "<<Huffnodei.weight<<"t"int IN(int i,int n) if(Huffnodei.lchild!=-1)IN(Huffnodei.lchild,n); Visit(i,n);if(Huffnodei.rc
8、hild!=-1)IN(Huffnodei.rchild,n);return 1;void main() void htree();int i,j,x1,x2,m1,m2,c,p;char z; create(w);for(i=0;i<2*29-1;i+)Huffnodei.weight=Huffnodei.flag=Huffnodei.parent=0;Huffnodei.lchild=Huffnodei.rchild=-1;for(i=0;i<26;i+)Huffnodei.c=i+'a'Huffnodei.weight=wi; Huffnode26.c=
9、9;n'Huffnode26.weight=w26; Huffnode27.c=','Huffnode27.weight=w27; Huffnode28.c='.'Huffnode28.weight=w28;for(i=0;i<29-1;i+)m1=m2=3000;x1=x2=0;for(j=0;j<29+i;j+)if(Huffnodej.weight<m1)&&(Huffnodej.flag=0)x2=x1;m2=m1;x1=j;m1=Huffnodej.weight;else if(Huffnodej.weight
10、)<m2&&(Huffnodej.flag=0)x2=j;m2=Huffnodej.weight;Huffnodex1.parent=Huffnodex2.parent=29+i;Huffnodex1.flag=Huffnodex2.flag=1;Huffnode29+i.weight=m1+m2;Huffnode29+i.lchild=x1;Huffnode29+i.rchild=x2; for(i=0;i<29;i+)cd.Start=29-1;c=i;p=Huffnodec.parent;while(p!=0)if(Huffnodep.lchild=c) cd
11、.Bitcd.Start=0;else cd.Bitcd.Start=1;cd.Start-;c=p;p=Huffnodec.parent;for(j=cd.Start+1;j<29;j+)Huffcodei.Bitj=cd.Bitj;Huffcodei.Start=cd.Start;fstream fp;fp.open("b.txt",ios:out);if(!fp)cout << "文件打开失败!n"exit(0);for(i=0;i<29;i+)fp<<Huffnodei.weight;fp<<Huf
12、fnodei.c;for(j=Huffcodei.Start+1;j<29;j+)fp<<Huffcodei.Bitj;fp<<"#n"fp.close();fstream node;node.open("c.txt",ios:out);fp.open("a.txt",ios:in);if(fp.fail()cout << "文件打开失败!n"exit(0);while(!fp.eof()fp.get(z);for(i=0;i<29;i+)if(z=Huffnodei
13、.c|z=Huffnodei.c-32) for(j=Huffcodei.Start+1;j<29;j+) node<<Huffcodei.Bitj; node<<"#" fp.close();node.close();cout<<"递归中序遍历"<<endl;IN(2*29-2,29);htree(); void htree() int i,j,k,n,l2000;char h;fstream fp,w;fp.open("c.txt",ios:in);if(!fp)cout << "文件打开失败!n"exit(0); i=0;while(!fp.eof()for(li=0;li+)fp.get(h);if(h='#') break;Ctreei.Bitli=(int)(h-'0');i+; w.open("d.txt",ios:out);if(!w)cout &
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 行政法学与国际法的关系与试题答案
- 煤堆场火灾应急预案演练(3篇)
- 风机机舱火灾应急预案(3篇)
- 行政法学复习的策略与实践知识点:试题及答案
- 办公场所火灾应急预案(3篇)
- 答案解析的系统化2025年计算机二级VB考试试题及答案
- 公司新市场拓展与风险管理策略的结合试题及答案
- 行政管理中的法律分析方法与试题答案
- 行政管理重要文件试题及答案
- 企业战略调整中的市场亮点试题及答案
- 绿色上网文明上网课件
- 交通事故行政复议申请书范本
- 世界文化遗产武当山古建筑群的资料
- 矿井防爆门(防爆井盖)安全检测技术规范
- 山水田园诗鉴赏公开课一等奖市赛课一等奖课件
- 酒店管理会所希尔顿酒店设计标准第节电梯电扶梯
- 福建新费用定额交底材料
- 器质性精神障碍患者的护理
- 趣味英语课件完整版
- 大学武术智慧树知到答案章节测试2023年浙江大学
- 前列腺增生症患者围手术期的护理
评论
0/150
提交评论