Huffman编码和译码课程设计.docVIP

  • 4
  • 0
  • 约1.25万字
  • 约 29页
  • 2017-06-20 发布于湖北
  • 举报
Huffman编码和译码课程设计

目 录 内蒙古科技大学课程设计任务书 I 第一节 需求分析 1 1.1 引 言 1 1.2 任务概述 1 1.3 数据描述 2 第二章 设计概要 3 2.1 总体设计 3 2.2数据类型 4 第三章 详细设计 6 3.1主函数 6 3.2存储表示 6 3.3赫夫曼树的算法 7 3.5赫夫曼译码的算法 10 3.6显示界面源程序 12 第四章 测试及运行 14 4.1运行结果 14 4.2 测试分析 16 第五章 总 结 17 5.1心得体会 17 5.2参考文献 17 附录:程序代码 18 内蒙古科技大学 本科生课程设计论文 题 目:Huffman编码和译码 专 业:计算机科学与技术 2013年05月27日 内蒙古科技大学课程设计任务书 课程名称 数据结构课程设计 设计题目 Huffman编码和译码 指导教师 丁雨 时间 2013.5.20——2013.5.30 一、教学要求 1. 掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力4. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。各字符的频率值出其中给字符编码,并针对一段文本(定义在上)进行编码和译码,实现一个编码/译码系统编码1. 分析课程设计题目的要求 2. 写出详细设计说明 3. 编写程序代码,调试程序使其能正确运行 4. 设计完成的软件要便于操作和使用 . 设计完成后提交课程设计报告资料查阅与讨论1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。 3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。数据结构:用面向对象方法与C++语言描述?清华大学出版社 2007 第一节 需求分析 1.1 引 言 在当今信息爆炸时代,如何采用有效的数据压缩技术节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视,赫夫曼编码正是一种应用广泛且非常有效的数据压缩技术。Huffman编码是一种编码方式,以树—即最优二叉树,带权路径长度最小的二叉树,经常应用于数据压缩。使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。这张编码表的特殊之处在于,它是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。各字符的频率值出其中给字符编码,并针对一段文(定义在上)进行编码和译码,实现一个编码/译码系统编码typedet struct { char ch; // 存放编码的字符 char bits[N+1]; // 存放编码位串 int len; // 编码的长度 }CodeNode; // 编码结构体类型 ③ 代码文件的译码 译码的基本思想是:读文件中编码,并与原先生成的赫夫曼编码表比较,遇到相等时,即取出其对应的字符存入一个新串中。 2.2数据类型 ①主要的数据结构: #define N 50 // 叶子结点数 #define M 2*N-1 // 赫夫曼树中结点总数 typedef struct { int weight; // 叶子结点的权值 int lchild, rchild, parent; // 左右孩子及双亲指针 }HTNode; // 动态分配数组存储赫夫曼树 typedef HTNode HuffmanTree[M+1]; ②主要流程图 图2.1 第三章 详细设计 3.1主函数 void main() { int n=26,i; char orz,back,flag=1; char str[]={A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z}; //初始化 int fnum[]={186,64,13,22,32,103,21,15,47,57,1,2,32,20,57,63,15,1,48,51,80,23,8,18,1,16}; //初始化 HTNode ht[M]; //建立结构体 HCode hcd[N]; //建立结构体 for (i=0;in;i++) //把初始化的数据存入ht结构体中 { ht[i].d

文档评论(0)

1亿VIP精品文档

相关文档