1、学 号: 课 程 设 计题 目 哈夫曼编码学 院 计算机科学与技术专 业 计算机科学与技术班 级姓 名指导教师2010 年 07 月 02 日武汉理工大学数据结构课程设计说明书1课程设计任务书学生姓名: 拉巴珠久 专业班级: 计算机 0806 指导教师: 姚寒冰 工作单位: 计算机科学系 题 目: 哈夫曼编码 初始条件:输入一段英文字符,试为该文中的每个字符编制相应的哈夫曼码。(1)I:初始化(Initialization) 。对输入的一段英文中的每个字符统计其权值,建立哈夫曼树; (2)E:编码(Encoding) 。利用已建好的哈夫曼树,对每个字符进行编码。(3)D:译码(Decoding
2、) 。利用已建好的每个编码,对输入的一个由 0、1 组成的序列进行译码;(4)P:印代码文件(Print ) 。将每个字符编的哈夫曼码和译码结果显示在终端上。测试用例见题集 p149。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)课程设计报告按学校规定格式用 A4 纸打印(书写) ,并应包含如下内容: 1、 问题描述简述题目要解决的问题是什么。2、 设计存储结构设计、主要算法设计(用类 C 语言或用框图描述) 、测试用例设计;3、 调试报告调试过程中遇到的问题是如何解决的;对设计和编码的讨论和分析。4、 经验和体会(包括对算法改进的设想)5、 附源程序清单和
3、运行结果。源程序要加注释。如果题目规定了测试数据,则运行结果要包含这些测试数据和运行输出,6、 设计报告、程序不得相互抄袭和拷贝;若有雷同,则所有雷同者成绩均为 0 分。时间安排:1、第 18 周(6 月 28 日至 7 月 2 日)完成。2、7 月 2 日 08:30 到计算中心检查程序、交课程设计报告、源程序(CD 盘) 。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录1 设计题目 12 问题描述 13.1 数据结构设计 13.2 主要算法设计 33.3 测试用例设计 64 调试报告 .75 结束语 .7六、课程设计参考资料 8附录 9F1 源代码 .9F2 运行结果
4、 16武汉理工大学数据结构课程设计说明书1哈夫曼编码1 设计题目哈夫曼编码2 问题描述输入一段英文字符,试为该文中的每个字符编制相应的哈夫曼码。(1)I:初始化(Initialization) 。对输入的一段英文中的每个字符统计其权值,建立哈夫曼树; (2)E:编码(Encoding) 。利用已建好的哈夫曼树,对每个字符进行编码。(3)D:译码(Decoding) 。利用已建好的每个编码,对输入的一个由 0、1 组成的序列进行译码; (4)P:印代码文件( Print) 。将每个字符编的哈夫曼码和译码结果显示在终端上。3设计3.1 数据结构设计抽象数据类型二叉树的定义如下:ADT Binary
5、Tree数据对象 D:D 是具有相同特性的数据元素的集合。数据关系 R:基本操作 P:InitBiTree(/权值int parent,lchild,rchild;/父亲结点和左右结点的位置;void select(Huffman * ht,int i,int k=s1;for(j=0;jusing namespace std;struct Huffman/定义指向结点的结构体int weight;/权值int parent,lchild,rchild;/父亲结点和左右结点的位置;void select(Huffman * ht,int i,int k=s1;for(j=0;jstr;i=0;
6、while(stri!= )n+;i+;n-;/while 循环统计输入的字符串中的字符数 ;c=new int n;for(i=0;istr1;m=0;while(str1i!= )m+;i+;m-;j=0;cout“译码后为:“ endl;while(jk)for(l=0,i=r;lk,i=m;i+,l+)if(hcjl!=0for(t=0;tn;t+)if(ct=j)coutstrt;break;j=0;break;if(str1i!=hcjl)j+;break;if(i=m)if(i=m)break;coutendl;return 0;武汉理工大学数据结构课程设计说明书16F2 运行结果武汉理工大学数据结构课程设计说明书17本科生课程设计成绩评定表班级:计算机 0806 姓名:拉巴珠久 学号:0120710340401序号 评分项目 满分 实得分1 学习态度认真、遵守纪律 202 设计结果 403 设计报告规范(包括设计图、设计代码) 40总得分/等级评语:注:优(90100 分)、良(8089 分)、中(7079 分)、及格(6069 分)、60 分以下为不及格。指导教师签名:年 月 日