欢迎来到天天文库
浏览记录
ID:25741995
大小:446.50 KB
页数:11页
时间:2018-11-22
《课程设计报告--哈夫曼编码译码系统》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、北京化工大学北方学院课程设计报告课程名称数据结构课程设计设计题目哈夫曼编码/译码系统专业、班级软件工程0901学号090203014姓名李泽指导教师周建敏设计时间2012年9月10日—2012年9月23日2012年10月12日11一、引言(简要说明设计题目的目的、意义、内容、主要任务等)随着计算机的普遍应用与日益发展,其应用早已不局限于简单的数值运算,而涉及到问题的分析、数据结构框架的设计以及设计最短路线等复杂的非数值处理和操作。算法与数据结构的学习就是为以后利用计算机资源高效地开发非数值处理的计算机程序打下坚实的理论、方法和技术基础。算法与数据结构旨在分析研究计算机加
2、工的数据对象的特性,以便选择适当的数据结构和存储结构,从而使建立在其上的解决问题的算法达到最优。数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。数据结构是数据存在的形式。《数据结构》主要介绍一些最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的
3、分析和讨论。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。通过此次课程设计主要达到以下目的:u了解并掌握数据结构与算法的设计方法,
4、具备初步的独立分析和设计能力;u初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;u提高综合运用所学的理论知识和方法独立分析和解决问题的能力;u训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。二、正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论等。正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、结构严谨,符合各学科、专业的有关要求。)问题分析:设计一个哈夫曼编码、译码系统。对一个A
5、SCII编码的文本文件中的字符进行哈夫曼编码,生成编码文件;反过来,可将编码文件译码还原为一个文本文件。(1)从文件中读入任意一篇英文短文(文件为ASCII编码,扩展名为txt);11(1)统计并输出不同字符在文章中出现的频率(空格、换行、标点等也按字符处理);(2)根据字符频率构造哈夫曼树,并给出每个字符的哈夫曼编码;(3)将文本文件利用哈夫曼树进行编码,存储成压缩文件(编码文件后缀名.huf)(4)用哈夫曼编码来存储文件,并和输入文本文件大小进行比较,计算文件压缩率;(5)进行译码,将huf文件译码为ASCII编码的txt文件,与原txt文件进行比较。根据上述过程可
6、以知道该编码译码器的关键在于字符统计和哈夫曼树的创建以及解码。哈夫曼树的理论创建过程如下:一、构成初始集合 对给定的n个权值{W1,W2,W3,...,Wi,...,Wn}构成n棵二叉树的初始集合F={T1,T2,T3,...,Ti,...,Tn},其中每棵二叉树Ti中只有一个权值为Wi的根结点,它的左右子树均为空。二、选取左右子树 在F中选取两棵根结点权值最小的树作为新构造的二叉树的左右子树,新二叉树的根结点的权值为其左右子树的根结点的权值之和。三、删除左右子树 从F中删除这两棵树,并把这棵新的二叉树同样以升序排列加入到集合F中。四、重复二和三两步, 重复二和
7、三两步,直到集合F中只有一棵二叉树为止。因此,有如下分析:1.我们需要一个功能函数对ASCII码的初始化并需要一个数组来保存它们;2.定义代表森林的数组,在创建哈夫曼树的过程当中保存被选中的字符,即给定报文中出现的字符,模拟哈夫曼树选取和删除左右子树的过程;3.自底而上地创建哈夫曼树,保存根的地址和每个叶节点的地址,即字符的地址,然后自底而上检索,首尾对换调整为哈夫曼树实现哈弗曼编码;4.从哈弗曼编码文件当中读入字符,根据当前字符为0或者1的状况访问左子树或者右孩子,实现解码;5.使用文件读写操作哈夫曼编码和解码结果的写入;解题方法:结构
此文档下载收益归作者所有