- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hffman编码与解码
《数据结构的课程设计》
报告
题目:Huffman编码与解码
班级: 1612401
学号: 161240113
姓名: 张修鸣
指导老师: 孙涵
完成日期: 2014.1.3
目 录
HYPERLINK \l _需求分析 一.需求分析.
HYPERLINK \l _程序主要功能 二.程序主要功能.
HYPERLINK \l _三.程序运行平台 三.程序运行平台.
HYPERLINK \l _四.系统框架图 四.程序类说明.
HYPERLINK \l _五.程序类和结构体的说明 五. 模块分析.
HYPERLINK \l _六模块分析 六. 存在的不足与对策.
七.体验感悟
HYPERLINK \l _七.比较有特色的函数 八. 程序源代码.
需求分析
对一篇英文文章(大于2000个英文字符),统计各字符出现的次数,实现Huffman编码,以及对编码结果的解码。
程序主要功能
(1) 输出每个字符出现的次数和编码,其中求最小权值要求用堆实现。
(2) 在Huffman编码后,要将编码表和英文文章编码结果保存到文件中,编码结果必须是二进制形式,即0 1的信息用比特位表示,不能用字符’0’和’1
(3) 提供读编码文件生成原文件的功能。
程序运行平台
该程序是用VC++6.0制做的,使用Microsoft Visual C++ 6.0运行该程序,具体操作是:打开Microsoft Visual C++ 6.0,菜单栏里点文件→打开工作区→找到“图书管理系统.dsw”这个文件→打开,或者在资源管理器中双击该文件,此时,VC++6.0会自动打开,并载入该系统相关资源,点击Run命令菜单或者或用快捷键Ctrl+F5运行该程序。
程序类说明
二叉树类记录
typedef struct{
int weight,flag,parent;
char c;
int lchild,rchild;
}hnodetype;
赫夫曼类
typedef struct{
int Bit[3000];
int Start;
}hcodetype;
函数分析:
void create(int T[]) 创建二叉树
void Visit(int i,int n) 显示元素的权值
int IN(int i,int n) 中序遍历
void htree() 赫夫曼解码
模块分析
我设计的系统,主要分为两大模块 1编码模块 2解码模块
该系统主要完成以下功能:
编码模块:
1 从文章中读取信息
2 构建赫夫曼树
3 进行赫夫曼编码并保存在文件中
解码模块:
1 从文件中读取赫夫曼码
2 进行解码
3保存在文件中
文章信息
元素权值
赫夫曼解码结果
存在的不足与对策
由于自身能力有限,所以没有起到真正的压缩文件的功能。
在设计过程中由于设计者的编程功底欠缺,因此学习过程较为艰辛,需要解决的问题也比较多。在以后的学习中,应该循序渐进,不可急于求成,先打好基础,这样才能更好地发展。
体验感悟
在编写程序的过程中,深切的体会到自身能力还有待提高,通过大规模的查询网上资料与相关书籍我学习到了很多以前不知道的编程方法与各种奇妙的函数语句时,提高了自己对程序设计本身的兴趣,更加乐意去学习这方面的新的东西,并在不断地自我挑战中收获着,或知识技能,或信心勇气。希望自己在今后的学习中可以更好的完善自我。
程序源代码
#includeiostream
#includestdio.h
#includemath.h
#include fstream
using namespace std;
typedef struct{
int weight,flag,parent;
char c;
int lchild,rchild;
}hnodetype;
typedef struct{
int Bit[3000];
int Start;
}hcodetype;
hnodetype Huffnode[100],Htree[100];
hcodetype Huffcode[100],cd,Ctree[2000];
int w[29];
void create(int T[]){
char c;
int m=0;
fstream fp;
fp.open(a.txt,ios::in);
if(fp.fail())
{
cout 文件打开失败!\n;
exit(0);
}
while(!fp.eof()){
fp.get(c);
if(c=zc=a)
T[c-a]++;
if(c=Zc=A)
T[c-A
文档评论(0)