文档介绍:学号:
HUBEI POLYTECHNIC UNIVERSITY
课程设计
题
目
哈夫曼树的应用
教学
院
计算机学院
专
业
班
级
姓
名
指导教师
课程设计任务书
2011〜2012学年第2学期
学生姓名: 专业班级:
指导教师: 工作部门: 计算机学院
一、 课程设计题目:哈夫曼树的应用
二、 课程设计内容(含技术指标)
从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树并将它存于文件
(比如树)显示在终端上;
利用已经建好的哈夫曼树(如不在内存,则从文件htmTree中读入),对文件Text, txt 中的正文进行编码,然后将结果存入文件Code, txt中。
利用已建好的哈夫曼树将文件Code, txt中的代码进行译码,结果存入文件Text, txt 中,并输出结果。
三、 进度安排
2012年6月11 H设计动员,布置任务
2012年6月12 B-2012年6月13日,查阅资料,分析、讨论与设计
2012年6月14 0 -2011年6月19 0,编写程序,进行调试
2012年6月20 0 -2011年6月21 0,完成模块联调,进行测试
2012年6月22 0,成果验收,完成设计报告、答辩
四、 基本要求
分析问题,给出数学模型,选择数据结构。
设计算法,给出算法描述,给出源程序清单。
编辑、编译、调试源程序,撰写课程设计报告。
界面友好,函数功能要划分好
总体设计应画一流程图
程序要加必要的注释
要提供程序测试方案
程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没
有价值的。
目录
摘要 3
一概述 4
课程设计的目的 4
课程设计的要求 4
哈夫曼算法的实现 4
二总体方案设计 5
整体的设计思路 5
算法的整体思路 5
工作内容 5
关键问题 6
三详细设计 7
总体设计流程图 7
建立哈夫曼树 7
编码功能 8
译码功能 8
四程序的调试与运行结果说明 9
五课程设计总结 12
程序部分代码 13
参考文献 16
摘要
随着计算机的普遍应用与日益发展,其应用早已不局限于简单的数值运算, 而涉及到问题的分析、数据结构框架的设计以及设计最短路线等复杂的非数值 处理和操作。算法与数据结构的学****就是为以后利用计算机资源高效地开发非 数值处理的计算机程序打下坚实的理论、方法和技术基础。
算法与数据结构旨在分析研究计算机加工的数据对象的特性,以便选择适 当的数据结构和存储结构,从而使建立在其上的解决问题的算法达到最优。
数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反 映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成, 呈什么结构。数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上 的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据 在计算机内部的存储安排。数据结构是数据存在的形式。
《数据结构》主要介绍一些最常用的数据结构,阐明各种数据结构内在的逻 辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法, 并对算法的效率进行简单的分析和讨论。数据结构是介于数学、计算机软件和计 算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操 作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等 各种领域。
学****数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对 它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用 能力和专业素质的提高。
一概述
1•课程设计的目的
理解和掌握该课程中的有关基本概念,程序设计思想和方法。
培养综合运用所学知识独立完成课题的能力。
培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论, 全方位考虑问题等科学技术人员应具有的素质。
掌握从资料文献、科学实验中获得知识的能力,提高学生从别人经验中 找到解决问题的新途径的悟性,初步培养工程意识和创新能力。
课程设计的要求
一个完整的系统至少具有以下功能:
I:初始化(Initialization)。从终端读入字符集大小n,以及n个字符 和n个权值,建立赫夫曼树,并将它存于文件hfmTree中。
E:编码(Encoding) o利用已建好的赫夫曼树(如不在内存,则从文件 hfmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件 CodeFile 中。
D:译码(Decoding) o利用已建好的赫夫曼树将