文件加密-赫夫曼算法-数据结构课程设计报告.docVIP

文件加密-赫夫曼算法-数据结构课程设计报告.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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

文档评论(0)

精华文档888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档