- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计
哈夫曼编码
学 院:计算机科学与技术学院
专 业:计算机科学与技术
学 生:
学 号:
指导教师:
2013年4月16日
目录
课程设计的目的、功能及要求--------------1
主要功能模块流程图----------------------2
算法的基本思想--------------------------3
系统测试--------------------------------6
结论------------------------------------7
源程序----------------------------------8
一、课程设计的目的、功能及要求
目的:
解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;
件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
.合运用所学的理论知识和方法独立分析和解决问题的能力;
用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
功能:
1首先读入待压缩源文件;
2然后建立并分析字母表,对每种字符的出现频度进行统计,以频度作为建立Huffman 树的权值;
3频度表建好后,就可以根据算法建立Huffman 树,对出现的每种字符进行Huffman编码;
4此时,再次读入源文件,逐字节编码,将得到的编码流写入到磁盘文件,并且计算压缩率。
要求:
1、核心数据结构用到的结构体要采用动态内存分配和链表结构。
2 、不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要注释清楚。对程序其它部分也进行必要的注释。
3 、对系统进行功能模块分析、画出总流程图和各模块流程图。
、用户界面要求使用方便、简洁明了、美观大方、格式统一。
所有程序需调试通过。
二、主要功能模块流程图
三、算法的基本思想
(1)构造Hufffman树的方法—Hufffman算法
构造Huffman树步骤:
根据给定的n个权值{w1,w2,……wn},构造n棵只有根结点的二叉树,令起权值为wj。
在森林中选取两棵根结点权值最小的树作左右子树,构造一棵新的二叉树,置新二叉树根结点权值为其左右子树根结点权值之和
在森林中删除这两棵树,同时将新得到的二叉树加入森林中。
重复上述两步,直到只含一棵树为止,这棵树即哈夫曼树。
(2)Huffman编码:数据通信用的二进制编码
思想:根据字符出现频率编码,使电文总长最短
编码:根据字符出现频率构造Huffman树,然后将树中结点引向其左孩子的分支标“0”,引向其右孩子的分支标“1”;每个字符的编码即为从根到每个叶子的路径上得到的0、1序列。
流程图:
部分程序:
构造哈夫曼树
void HaffmanTree(HNodeType HuffNode[MAXNODE])
{
int i,j,m1,m2,x1,x2;
for(i=0;iMAXNODE;i++)
{
HuffNode[i].parent=-1;
HuffNode[i].lchild=-1;
HuffNode[i].rchild=-1;
}
for(i=0;inum-1;i++)
{
m1=m2=MAXVALUE;
x1=x2=0;
for(j=0;jnum+i;j++)
{
if(HuffNode[j].parent==-1HuffNode[j].weightm1)
{
m2=m1;
x2=x1;
m1=HuffNode[j].weight;
x1=j;
}
else
if(HuffNode[j].parent==-1HuffNode[j].weightm2)
{
m2=HuffNode[j].weight;
x2=j;
}
}
HuffNode[x1].parent=num+i;
HuffNode[x2].parent=num+i;
HuffNode[num+i].weight=HuffNode[x1].weight+HuffNode[x2].weight;
HuffNode[num+i].lchild=x1;
HuffNode[num+i].rchild=x2;
}
}
(2)哈夫曼编码
LinkList Bianma(LinkList l,Code c
您可能关注的文档
最近下载
- 1.1_犬的起源、进化与特征.ppt VIP
- 2024高考语文考前精刷卷专题十四文学类文本阅读散文.docx VIP
- 大学语文之诗经电子教案.doc VIP
- 高校生活超市和24小时便利店租赁经营投标常用方案(最全).doc VIP
- 15J001 围墙大门图集标准.docx VIP
- 双向搅拌桩加固高速公路软土地基现场对比试验研究.pdf VIP
- 铁道概论:铁路信号和通信PPT教学课件.pptx VIP
- 《医学微生物学》课件——细菌的形态与结构.ppt VIP
- 贵州丹寨金汞矿日处理500吨(一期250吨)金汞原矿浮选生产线技改项目环境影响报告书.pdf VIP
- 大一新生班干部竞选演讲稿PPT.pptx VIP
文档评论(0)