1、 课课 程程 设设 计计 课程名称_ _数据结构课程设计_ 题目名称_ 哈夫曼编码译码器_ 学生学院 专业班级 学 号 学生姓名 指导教师 2011 年 12 月 23 日 1 摘要摘要: 在当今信息爆炸时代, 如何采用有效的数据压缩技术来节省数据文件的存储 空间和计算机网络的传送时间已越来越引起人们的重视。 电报通信是传递文字的 二进制码形式的字符串。但在信息传递时,总希望总长度尽可能最短,即采用最 短码。 关键字:关键字: 哈夫曼树 编码 解码 数据压缩技术 2 目目 录录 摘要: .1 关键字:1 第一章 需求分析.3 第二章 数据结构定义及其操作实现 .3 第三章 程序设计及其实现3
2、3.1 从文件读入原文 3 3.2 统计原文中各字符的权值4 3.3 编码 .5 3.4 解码 .6 3.5 主函数 .7 第四章 运行结果及其分析8 第五章 问题及其解决方法 10 第六章 心得体会(设计总结) 10 附录源程序 11 1、 头文件 11 2、 赫夫曼编码算法 . 12 3、 主函数 18 参 考 文 献 21 3 第一章第一章 需求分析需求分析 1问题要求:打开一篇英文文章,统计出每个字符出现的次数,然后以他 们为权值,对每个字符进行编码,编码完成后对其编码进行译码。 2程序运行环境:windows、visual c+或 java 等 3要求: a) 输入一篇英文文章,根据
3、字符出现的次数给出哈夫曼编码方式。 b) 对英文文章进行编码; c) 对编码进行译码核对正确性 第二章第二章 数据结构定义及其操作实现数据结构定义及其操作实现 2.1 哈弗曼树节点 typedef struct unsigned int weight; unsigned int parent; unsigned int lchild; unsigned int rchild; HuffTreeNode,*HuffTree; 2.2 字符-权值-编码映射 typedef struct char c; unsigned int weight; char *code; CharMapNode,*Ch
4、arMap; 第三章第三章 程序设计及其实现程序设计及其实现 3.1 从文件读入原文 void Huffman:ReadTextFromFile(char *filename) 4 ifstream infile(filename); if(!infile) cerr code; void Huffman:Decode() text = “; string:size_type i,count; for (i = 0; i code.size(); i += count) for (count = 1; count n; +count) for (int j = 1; j = n; +j) if (code.substr(i, count) = charsj.code) text += charsj.c; goto next; next: ;