课程设计
题目哈夫曼编码
学院计算机科学与技术
专
计算机科学与技术
业
班
级
姓
名
指导
教师
20 0 0
10 年7 月2 日
课程设计任务书
学生姓名:拉巴珠久专业班级:计算机0806
指导教师:姚寒冰工作单位:计算机科学系
题目:哈夫曼编码
初始条件:
输入一段英文字符,试为该文中的每个字符编制相应的哈夫曼码。
(1) 1:初始化(Initialization )。对输入的一段央文中的每个字符统计其权值,建立哈夫曼树;
(2) E:编码(Encoding )。利用已建好的哈夫曼树,对每个字符进行编码。
(3) D:译码(Decoding )。利用
已建好的每个编码,对输入的一个由0、1组成的序列进行译码;
(4) P:印代码文件(Print )。将每个字符编的哈夫曼码和译码结果显示在终端上。
测试用例见题集p149。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 课程设计报告按学校规定格式用A4纸打印(书写),并应包含如下内容:
1、问题描述
简述题目要解决的问题是什么。
2、设计
存储结构设计、主要算法设计(用类C语言或用框图描述)、测试用例设计;
3、调试报告
调试过程中遇到的问题是如何解决的;对设计和编码的讨论和分析。
4、经验和体会(包括对算法改进的设想)
5、附源程序清单和运行结果。源程序要加注释。如果题目规定了测试数据,则运行结果要包含这些测试数据和运行输出,
6、设计报告、程序不得相互抄袭和拷贝;若有雷同,则所有雷同者成绩均为0分。
时间安排:
1、第18周(6月28日至7月2日)完成。
2、7月2日08 : 30到计算中心检查程序、交课程设计报告、源程序( CD盘)。
指导教师签名:年月日系主任(或责任教师)签名:年月日
目录
1设计题目 (1)
2问题描述 (1)
3.1数据结构设计 (1)
3.2主要算法设计 (3)
3.3测试用例设计 (6)
4调试报告 (7)
5结束语 (7)
六、课程设计参考资料 (8)
附录 (9)
F1源代码 (9)
F2运行结果 (16)
哈夫曼编码
1设计题目
哈夫曼编码
2问题描述
输入一段英文字符,试为该文中的每个字符编制相应的哈夫曼码。
(1)I:初始化(Initialization )。对输入的一段英文中的每个字符统计其权值,建立哈夫曼树;
(2)E:编码(Encoding)。利用已建好的哈夫曼树,对每个字符进行编码。
(3)D:译码(Decoding)。利用已建好的每个编码,对输入的一个由0、1组成的序列进行译码;
(4)P:印代码文件(Print )。将每个字符编的哈夫曼码和译码结果显示在终端上。
3 ?设计
3.1数据结构设计
抽象数据类型二叉树的定义如下:
ADT Bi naryTree{
数据对象D:D是具有相同特性的数据元素的集合。
数据关系R:
基本操作P:
InitBiTree (&T);
操作结果:构造空二叉树T o
DestroyBiTree (&T);
初始条件:二叉树T存在。
操作结果:销毁二叉树T o
计算机科学与工程学院CreateBiTree (&T,definition );
初始条件:definition给出二叉树T的定义。
操作结果:按definition构造二叉树T。
ClearBiTree (&T);
初始条件:二叉树T存在。
操作结果:将二叉树T清为空树。
BiTreeEmpty (T);
初始条件:二叉树T存在。
操作结果:若T为空二叉树。则返回TRUE,否贝U FALSE
BiTreeDepth (T);
初始条件:二叉树T存在。
操作结果:返回T的深度。
Root (T);
初始条件:二叉树T存在。
操作结果:返回T的根。
Value (T, e);
初始条件:二叉树T的存在,e是T中某个结点。
操作结果:返回e的值。
Assign (T, &e, value);
初始条件:二叉树T存在,e是T中某个结点。
操作结果:结点e赋值为value。
Pare nt (T, e);
初始条件:二叉树T存在,e是T中某个结点。
操作结果:若e是T的非根结点,贝U返回它的双亲,否则返回“空”。
DeleteChild (T, p , LR);
初始条件:二叉树T存在,p指向T中某个结点,LR为0或1。
操作结果:根据LR为0或1,删除T中p所指结点的左或右子树。