数据结构哈夫曼编码加密文件..docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机与信息工程系 《数据结构》课程设计报告 PAGE 学号 201 2014-2015学年 第一学期 《数据结构》 课程设计报告 题目: 哈夫曼编码加密文件 专业: 班级: 姓名: 学号: 指导教师: 成绩: 计算机与信息工程系 2014年 10月 30 日 PAGE \* MERGEFORMAT PAGE \* MERGEFORMAT 1 目 录 1问题描述1 2需求分析1 2.1 数据结构1 2.2 主要函数1 3概要设计1 3.1可满足输入输出的形式及限制2 3.2所用数据类型的定义及含义2 3.3各函数之间的调用关系2 3.4各个模块之间的主要关系 2 4详细设计2 4.1流程图3 4.2源代码4 5测试情况10 6测试结果11 7总结与提高15 参考文献16 PAGE \* MERGEFORMAT PAGE \* MERGEFORMAT 3 1 问题描述 用哈夫曼编码,将输入的文字,或者文件中的文字进行编码,并输出加密后的文字。 2需求分析 2.1 数据结构 此函数中运用到的数据结构知识就是哈夫曼树的建立以及遍历,建立主要就是每一次选择权值最小的两个数并将其求和,然后用他们的和代替这两个数,再进行求两个最小值,最后构成一个哈夫曼数;遍历是采用从叶子结点开始向根节点确定唯一的路径。掌握现实复杂问题的分析建模和解决方法(包括问题描述、系统分析、设计建模、代码实现、结果分析等);提高利用计算机分析解决综合性实际问题的基本能力。 2.2 主要函数 (1)void CrtHuffmantree(HuffmanTree ht,int w[],int n),功能是建立一个哈夫曼树; (2)void CrtHuffmanCode(HuffmanTree ht,HuffmanCode hc,int n),功能是计算哈夫曼编码; (3)void dianwen(int count[],char alldata[]),功能是统计输入电文的字母种类以及频率; (4)int fcount(char alldata[],char data[],int count[]),功能是统计打开文件中出现的字母的种类以及频率; (5)void showtime(),功能是查看系统当前的时间; (6)int search(char ch,char data[],int n),查询电文中的每一个字母所对应得哈夫曼编码的下标; (7)void Printf(HuffmanCode hc,int n,char data[],char alldata[],int count[]),功能是输出每一个字母所对应的哈夫曼编码; (8)void showall(HuffmanCode hc,char alldata[],int count[],char data[],int n),功能是输出经过加密后的密文。 (9)void showMenu(); 功能是输出菜单列表 3概要设计 3.1可满足输入输出的形式及限制 本程序支持字符编码解码,程序运行中有一个文件,用于存储加密字符。支持用户在屏幕查看文件内容。 程序在用户输入数据前,会输出相应的提示,在用户输入超出范围或者输入错误时,会提示重新输入或者提示错误并退出。使用菜单操作,提示用户相应的操作,用户指定文件对其进行加密或解密,在屏幕上可以看到文件内容。 3.2所用数据类型的定义及含义 此程序运用了整形、实型、字符型、指针、数组、结构体。下面是全局(举例): typedef struct{ int weight; int parent,Lchild,Rchild; }HTNode,HuffmanTree[M+1];//构造赫夫曼树结点的结构体 #define N 27//定义最大叶子结点个数 #define M 2*N-1 typedef char* HuffmanCode[N+1]; //存储哈夫曼编码串的头指针 int count[27];//用于存储所有字母出现的频率,count[0]用于存储字母的总个数 char data[N];//用于存储所出现过的字母 3.3各函数之间的调用关系 主函数中是菜单打印(show())和showtime(),各模块套用和调用关系如下: 主函数中调用chiocel(),openfile(),input(),子函数中调用CrW(data,w,count)【fcount(alldata,data,count)】,CrtHuffmantree(ht,w,n),CrtHuffmanCode(ht,hc,n),Printf(hc,n,data,alldata,count),showall(hc,alldata,count,da

文档评论(0)

wyjy + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档