- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
赫夫曼树的应用
题目:赫夫曼树的
一、前 言 2
二、程序设计目的 3
三、需求分析 3
四、概要设计 3
1、主要需要用到的主要数据结构 3
2、算法流程分析 4
五、源程序和运行结果 5
1.源程序如下 5
2、运行结果 11
六、调试分析 14
1.测试的结果 14
2.时间复杂度分析 14
3.各模块在设计和调试时存在问题 14
4.算法的改进设想 14
七、设计心得和总结 15
八、参考书籍 15
一、前 言
赫夫曼编码(Huffman Coding)是一种编码方式,赫夫曼编码是可变字长编码(VLC)的一种。赫夫曼压缩是个无损的压缩算法,一般用来压缩文本和程序文件。赫夫曼压缩属于可变代码长度算法一族。意思是个体符号(例如,文本文件中的字符)用一个特定长度的位序列替代。因此,在文件中出现频率高的符号,使用短的位序列,而那些很少出现的符号,则用较长的位序列。
1.熟悉掌握C语言的基础知识和技能;2.学习利用计算机语言实现赫夫曼树构造的算法;3.了解利用赫夫曼树对给定权值的字符的赫夫曼编码的算法思想
1、打开一个文本文件,用一个指针指向它,指针变量为*pf
2、对其进行字母频率统计,把字母和字母的频率放到结构体syr s1[]中
3、用Huffman算法建立Huffman树以及每个字母的Huffman码(Huffman数以及Huffman码两张表,均要求输出,最好能在文本中输出)
4、把该文本文件的英文文章利用Huffman树编码生成二进制文件(该文件要求输出)
5、打开该二进制文本文件,对其解码,仍然利用刚才的Huffman树进行解码
6、输入,输出要求都是读取文件。
四、概要设计
1、主要需要用到的主要数据结构
a、赫夫曼树的数据结构
typedef struct
{
char data;
int weight;
int parent;
int lchild;
int rchild;
}HuffmanTree[M];
b、 赫夫曼编码的数据结构
typedef struct
{
char data;
char bits[N];
}HuffmanCode[N];
c、字符串存储单元的数据结构
typedef struct str
{
char data;
char num;
//int num;
}str;
2、算法流程分析
a、建立赫夫曼树的数据结构、赫夫曼编码的数据结构和字符串存储单元的数据结构, 字符串存储单元的数据结构是用来存储字母和对应的权值。
b、调用int read(str s2[])函数,取读文本ywq1.txt并统计这里出现字符的个数(字母区分大小写、空格键和各种标点符号),再统计该字符在文本中出现的频率(也就是所谓的权值)存放在结构体str s2[]中,返回字母个数k,打印字母的和对应的权值。
c、调用CrtHuffmanTree(ht,s2,k)函数来创建赫夫曼数,首先初始化节点并给其赋值0,利用for的循环语句并调用SelectMin函数,查找哈夫曼链表中两个权值最小的来建立赫夫曼树,打印赫夫曼树各节点的权值和它的左右孩子。
d、调用CrtHuffmanCode(ht,hc,k)利用建立好的哈夫曼树对文本文本ywq1.txt进行编码,并把编译的赫夫曼编码储存在文本ywq2.txt中,并且打印出来文本的赫夫曼编码。
e、通过调用DecodHuffmanCode(ht,k)将文本ywq2.txt字符的赫夫曼码翻译为字符,这就是所谓的反译码,把翻译的英语文章存储在文本ywq3.txt并且存储,并且在对话执行框中打印出来。
五、源程序和运行结果
1.源程序如下
#includestdio.h
#includestring.h
#includestdlib.h
#define N 100
#define M 2*N-1
typedef struct //定义哈夫曼树存储节点结构体类型
{
char data;
int weight;
int parent;
int lchild;
int rchild;
}HuffmanTree[M];
typedef struct //定义哈夫曼编码结构体类型
{
char data;
char bits[N];
}HuffmanCode[N];
typedef struct str //定义字符串存储单元结构体类型
{
char data;
char num;
//int num;
}
您可能关注的文档
最近下载
- Photoshop 基础教学 第15章 创建3D立体效果.ppt VIP
- - 数码相机 - 佳能 - EOS-1Dx Mark II说明书.pdf
- “三新”背景下高中化学课堂的深度教学策略探究.docx VIP
- AI赋能课堂教学创新 课件.pptx VIP
- 防洪治理工程环评环境影响报告书.pdf
- 如何正确填写 《入党志愿书》.ppt VIP
- 校园共享单车租赁服务系统APP设计.pdf VIP
- NIFD:人工智能-2024Q1中国宏观金融报告-NIFD季报-探寻新质生产力(2).docx VIP
- 环境影响评价报告公示嘉兴市中华化工有限责任新建香兰素仓库嘉兴市南.docx
- SalesDriver:2024中国B2B企业信息流投放获客白皮书(1).docx VIP
文档评论(0)