- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
文件加密-赫夫曼算法
注明:对应该实验代码文件下载地址(如下 注:编辑器:vc 6.0):下载地址
一 目的
通过课程设计,巩固和加深理论知识掌握问题分析方法包括问题描述分析、设计、实现、结果分析HTNode补充数值,创建赫夫曼树HuffmanTree。
3、赫夫曼树创建完毕,即可进行字符串的编码和解码工作。核心算法即完成。
2、功能要求和说明
使用菜单操作,提示用户相应的操作,用户指定文件对其进行加密或解密,在屏幕上可以看到文件内容。
用户指定文件,默认在D:\,为了便于测试编码和解码的正确性。可以由用户输入字符串进行编码和解码。
三 概要设计
1、可满足输入输出的形式及限制
本程序只支持26字符编码解码,程序运行中间会产生一个outfile.txt文件,用于存储加密或解密内容。支持用户在屏幕查看文件内容。
程序在用户输入数据前,会输出相应的提示,在用户输入超出范围或者输入错误时,会提示重新输入或者提示错误并退出。
2、所用数据类型的定义及含义
此程序运用了整形、实型、字符型、指针、数组、结构体。下面是全局(举例):
typedef struct{
int weight;
int parent,lchild,rchild;
}HTNode; //构造赫夫曼树结点的结构体
typedef struct{
HTNode *HTN; //存储编码的各个字符
int length; //需编码字符个数
int size; //赫夫曼编码总容量
}HuffmanTree; //构造赫夫曼树的结构体
typedef struct{
char *ch; //存放需要编码的原始字码
int *in; //存放各个字码的权值
}Weight;
char Code[27][26]; //存放各个字符的赫夫曼编码01
int Code_N[30]; //存放各个字符对应编码01的个数,用于输出控制
3、各模块的划分
简化图:
4、各模块的功能描述
1、赫夫曼编码部分:题意规定字符频率或用户输入字符串,计算出字符权值,创建赫夫曼树,进行赫夫曼编码,将其存入全局变量,用于字符串编码解码,文件加密及解密。
2、文件加密部分:由用户输入加密的文件名称(filename.txt),加密过程中将加密后内容暂时存入outfile.txt中,此时已经将filename.txt中内容加密,但内容在outfile.txt中,重新将outfile.txt内容存入到filename.txt中,则文件加密过程完成。
3、文件解密部分:文件解密过程同加密过程,只是内容处理只是由加密变为解密过程。其余过程不改变,解密过程也用到了outfile.txt文件。
4、文件查看部分:用户输入文件名称,文件内容输出到屏幕,用于查看文件加密或解密的结果。
5、各函数的定义及描述
void showMenu(); //输出菜单列表
操作结果:在屏幕上打印出菜单
void Init_HuffmanTree(HuffmanTree H,Weight S); //对赫夫曼树结构初始化
H是初始化的赫夫曼树的结构体,S是字符及权值的结构体
操作结果:对H和S进行了初始化
void Init_Weight(Weight S,int msize,int msize1); //对编码个数和权值的结构初始化
S是传入函数的字符及权值的结构体
msize和msize1是初始化S.ch和S.in的整形数据
操作结果:将Weight结果体初始化
void WeightNumber(Weight S); //求出输入字符串各个字符的权值
S是传入的的Weight结构体
操作结果:S的数值按照程序重新计算字符权值
void select(HuffmanTree H,int j,int a[]); //选择parent=0且权值较小的两个HTnode
H是HuffmanTree结构体传入数值,a[]用来返回两个较小权值的下标
操作结果:a[]存入了在j个数据中较小权值的结点下标
void creat_HuffmanTree(HuffmanTree H); //创建赫夫曼树
H是HuffmanTree
您可能关注的文档
- 第11章 结构体与共用体.ppt
- 第11章 结构与共同体.ppt
- 第11章-结构体与共同体.ppt
- 第12章 SQL Server安全管理.ppt
- 第13讲T-SQL编程.ppt
- 第14章 SQL Server开发概述.ppt
- 第16章 移动电子商务.ppt
- 第八章 代码生成.ppt
- 第八章结构体与共同体.ppt
- 第八章结构体与共用体.ppt
- 2025下半年四川绵阳安州区考核招聘医疗卫生专业技术人员7人备考试题及答案解析.docx
- 2025年湖州安吉雷博人力资源服务有限公司公开招聘2人备考试题及答案解析.docx
- 2025年甘肃省酒泉市玉门市人民法院招聘司法辅助人员笔试参考题库附答案解析.docx
- 2025年黑龙江哈尔滨“丁香人才周”(春季) 卫生健康系统专项招聘1人备考试题及答案解析.docx
- 2025年湖南科技大学第一批高层次人才招聘50人备考试题及答案解析.docx
- 2025年湖南中医药大学招聘72人备考试题及答案解析.docx
- 2025年江苏扬州市宝应县教育系统事业单位面向乡村定向师范生招聘教师78人备考试题及答案解析.docx
- 2025年巢湖黄麓师范学校编外聘用教师招聘11人笔试参考题库附答案解析.docx
- 2025年福州市平潭综合实验区实发教育咨询有限公司2025年下半年幼儿园教师招聘笔试参考题库附答案解析.docx
- 2025下半年黑龙江科技大学招聘博士教师92人备考试题及答案解析.docx
文档评论(0)