学号_姓名(指导教师)-课程设计报告参考模板

学号_姓名(指导教师)-课程设计报告参考模板

ID:46423886

大小:70.00 KB

页数:5页

时间:2019-11-23

学号_姓名(指导教师)-课程设计报告参考模板_第1页
学号_姓名(指导教师)-课程设计报告参考模板_第2页
学号_姓名(指导教师)-课程设计报告参考模板_第3页
学号_姓名(指导教师)-课程设计报告参考模板_第4页
学号_姓名(指导教师)-课程设计报告参考模板_第5页
资源描述:

《学号_姓名(指导教师)-课程设计报告参考模板》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、哈尔滨理工大学课程设计(数据结构题目:班级:计算机科学与技术计1牛9姓名:指导教师:赵之莉问题的描述及设计的目的设计一个哈夫曼编码、译码系统。对一个asch编码的文本文件中的字符进行哈夫曼编码,生成编码文件;反过来,可将编码文件译码还原为一个文本文件。(1)从文件中读入任意一篇英文短文(文件为Ascn编码,扩展名为txt);(2)统计并输出不同字符在文章中出现的频率(空格、换行、标点等也按字符处理);(3)根据字符频率构造哈夫曼树,并给出每个字符的哈夫曼编码;(4)将文本文件利用哈夫曼树进行编码,存储成

2、压缩文件(编码文件后缀名.huf)(5)用哈夫曼编码来存储文件,并和输入文本文件大小进行比较,计算文件压缩率;(6)进行译码,将huf文件译码为ASCn编码的txt文件,与原txt文件进行比较。根据上述过程可以知道该编码译码器的关键在于字符统计和哈夫曼树的创建以及解码。哈夫曼树的理论创建过程如下:一、构成初始集合对给定的n个权值{Wl,W2,W3,...,Wi,...,Wn^成n棵二叉树的初始集合F={Tl,T2,T3,...,Ti,...,Tn},其中每棵二叉树Ti中只有一个权值为Wi的根结点,它的左

3、右子树均为空。二、选取左右子树在F中选取两棵根结点权值最小的树作为新构造的二叉树的左右子树,新二叉树的根结点的权值为其左右子树的根结点的权值之和。三、删除左右子树从F中删除这两棵树,并把这棵新的二叉树同样以升序排列加入到集合F中。重复二和三两步,重复二和三两步,直到集合F中只有一棵二叉树为止。因此,有如下分析:1.我们需要一个功能函数对ASCH码的初始化并需要一个数组来保存它们;2.定义代表森林的数组,在创建哈夫曼树的过程当中保存被选中的字符,即给定报文中出现的字符,模拟哈夫曼树选取和删除左右子树的过程

4、;3.自底而上地创建哈夫曼树,保存根的地址和每个叶节点的地址,即字符的地址,然后自底而上检索,尾对换调整为哈夫曼树实现哈弗曼编码4.从哈弗曼编码文件当中读入字符,根据当前字符为0或者1的状况访问左子树或者右孩子,实现解码;5.使用文件读写操作哈夫曼编码和解码结果的写入二应具备的功能1・定义结构体类型的signode作为哈夫曼树的节点,定义结构体类型的hufhode作为哈夫曼编码对照表的节点,定义HFM类实现对哈夫曼树的创建,利用其成员函数完成哈夫曼编码译码的工作。2•定义signode类型的全局数组SN

5、[256](为方便调用,之后的forest[256],hufNode[256]均为全局数组),保存ASCH编码的字符,是否在文章中出现(bool类型)以及出现次数(int类型,权重),左右孩子节点位置,父节点位置信息;3.为节省存储空间,定义signode*类型的全局数组forest[256],模拟森林,在创建哈夫曼树的过程中保存出现字符的指针,模拟哈夫曼树选取和删除左右子树的过程;4.定义hufnode类型的全局数组hufl^ode[256],在编码时最为哈夫曼编码对照表的节点,char型c保存字符,

6、intcode[100]保存其哈夫曼编码;5•定义HFM类,主要保存哈夫曼树的根节点指针,但其丰富的功能函数将实现哈夫曼编码译码的工作及其他功能;三•设计思想%1.环境和工具%1.详细设计(源程序清单)%1.结果分析及算法评价

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。