- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
哈夫曼编/译器
需求分析
本演示程序实现Haffman编/译码器的作用, 目的是为信息收发站提供一个编/译系统,从而使信息收发站利用Haffman编码进行通讯,力求达到提高信道利用率,缩短时间,降低成本等目标。系统要实现的两个基本功能就是:① 对需要传送的数据预先编码;② 对从接收端接收的数据进行译码;
本演示程序需要在终端上读入n个字符(字符型)及其权值(整形),用于建立Huffman树,存储在文件hfmanTree.txt中;如果用户觉得不够清晰还可以打印以凹入表形式显示的Huffman树;
本演示程序根据建好的Huffman树,对文件的文本进行编码,结果存入文件CodeFile中;然后利用建好的Huffman树将文件CodeFile中的代码进行译码,结果存入文件TextFile中;最后在屏幕上显示代码(每行50个),同时显示对CodeFile中代码翻译后的结果;
本演示程序将综合使用C++和C语言;
测试数据:
(1)教材例6-2中数据:8个字符,概率分别是0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,可将其的权值看为5,29,7,8,14,23,3,11
(2)用下表给出的字符集和频度的实际统计数据建立Haffman树,并实现以下报文的编码和译码:“THIS PROGRAM IS MY FAVORITE”.
字符
空格
A
B
C
D
E
F
G
H
I
J
频度
186
64
13
22
32
103
21
15
47
57
1
字符
K
L
M
N
O
P
Q
R
S
T
U
频度
5
32
20
63
15
1
48
51
80
23
8
字符
V
W
X
Y
Z
频度
18
1
16
1
概要设计
设定哈夫曼树的抽象数据类型定义
ADT Huffmantree{
数据对象:D={ai| ai ∈Charset,i=1,2,3,……n,n≥0}
数据关系:R1={ ai-1, ai | ai-1, ai ∈D, i=2,3,……n} 基本操作: Initialization(HT,HC,w,n,ch)
操作结果:根据n个字符及其它们的权值w[i],建立Huffman树HT,用字符数组ch[i]作为中间存储变量,最后字符编码存到HC中;
Encodeing(n)
操作结果:根据建好的Huffman树,对文件进行编码,编码结果存入到文件CodeFile中
Decodeing(HT,n)
操作结果:根据已经编译好的包含n个字符的Huffman树HT,将文件的代码进行翻译,结果存入文件TextFile中
} ADT Huffmantree
2、本程序主要包括三个模块
1)主程序模块
void main()
{
输入信息,初始化;
选择需要的操作;
生成Huffman树;
执行对应的模块程序;
输出结果;
}
2)编码模块——根据建成的Huffman树对文件进行编码;
3)译码模块——根据相关的Huffman树对编码进行翻译;
各模块的调用关系如图所示
详细设计
1、树类型定义
typedef struct {
unsigned int weight; //权值
char ch1; //储存输入的字符
unsigned int parent,lchild,rchild;
}HTNode,*HuffmanTree;
2、编码类型定义
typedef char **HuffmanCode;
哈夫曼编译器的基本操作设置如下
Initialization(HuffmanTree HT,HuffmanCode HC,int *w,int n,char *ch)
//根据输入的n个字符及其它们的权值w[i],建立Huffman树HT,用字符数组ch[i]作为中间存储变量存储编码,最后转存到HC中;
Encodeing(int n)
//根据建好的包含n个字符的Huffman树,对文件进行编码,编码结果存入到文件CodeFile中
Decodeing(HuffmanTree HT,int n)
//根据已经编译好的包含n个字符的Huffman树HT,对文件的代码进行翻译,结果存入文件TextFile中
基本操作操作的算法
①程序初始化,
①程序初始化,建立Huffman树
void Initialization(HuffmanTree HT,HuffmanCode HC,int *w,int n,char *ch)
{ //根据输入n个字符及其权值w[i]创建哈夫曼树HT和对字符编码HC
cinn; //输入包含的字符数
cin.get(ch[m]); //输入字符集,包括需要的空格
cinw[d]; //输入对应的权值
if(n=1)
retu
您可能关注的文档
- AABB式词语完整版.doc
- 汇编语言子程序结构实验报告.doc
- 潍坊市文化产业与旅游产业融合发展SWOT分析.pdf
- 2023新高考数学原卷.doc
- 高中生物实验报告册_2.doc
- 基础护理实验报告单.doc
- 人教版高一语文《沁园春长沙》教学PPT课件.ppt
- 实验报告纸完整版.doc
- 第7课 隋唐制度的变化与创新.ppt
- 计算机网络实验报告 2.doc
- 品牌设计(AIGC+微课版) 课件 项目7 了解品牌设计.pptx
- 《大数据营销(AI+微课版)》教案-第五章 大数据驱动下的客户管理 .doc
- 品牌设计(AIGC+微课版) 课件 项目3 品牌标志设计.pptx
- 智能控制技术(微课版)课件全套 项目1--5 自动控制系统---智能制造系统.pptx
- 增材制造工艺与应用 项目八任务一2 扇叶的三维扫描与3D打印.pptx
- 运输实务 课件 5.2航空运输业务运作.pptx
- 《药物制剂综合实训》 教案全套 项目1--6 散剂的生产——口服补液盐散(Ⅱ)---注射剂的生产——碳酸氢钠注射液.doc
- 品牌设计(AIGC+微课版) 课件 项目6 品牌应用物品设计.pptx
- 《微积分下册》课件 10.2 一阶微分方程.pptx
- 《大数据营销(AI+微课版)》课件 第2--7章 基于大数据的消费者洞察与画像 ---大数据营销职业规范.pptx
最近下载
- 2024-2025学年北京海淀区三上期末数学试卷及答案.pdf VIP
- 国家开放大学(电大)《社会统计学》期末考试复习试题及答案解析.docx VIP
- 八年级数学上册专题14.6 因式分解的应用(压轴题专项讲练)(人教版)(原卷版).docx VIP
- 硬笔楷书笔画.ppt VIP
- 北师大版七年级数学寒假班讲义(基础班).pdf VIP
- 2025年垃圾发电厂数字化升级研究.docx VIP
- 儿童慢性鼻窦炎的诊断和治疗中国专家共识(杭州2024).pptx VIP
- 辽宁初中数学中考考点.docx VIP
- 人呼吸道合胞病毒下呼吸道感染治疗及预防指南(2024版).pptx VIP
- 静设备基础知识.pptx
原创力文档


文档评论(0)