资源描述:
《大数据结构实验报告材料(哈夫曼编码加密文件资料资料资料)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用标准文案《数据结构》实验报告题目:利用哈夫曼编码给文件或者文字加密班级:xxxx学号:xxxxxxxxxxx姓名:xxx完成时间:2010年12月19日任课教师:xxx精彩文档实用标准文案问题描述用哈夫曼编码,将输入的文字,或者文件中的文字进行编码,并输出加密后的文字。主程序main一、程序总体结构显示界面告诉用户程序名称show()给用户提供选择方式chioce1()显示系统时间showtime()打开文件进行加密openfile()退出程序输入电文进行加密input()统计输入(文件中)字母的出现频率CrW(data,w,
2、count)【fcount(alldata,data,count)】将输入(文件中)的电文创建成哈夫曼树CrtHuffmantree(ht,w,n)将输入(文件中)的电文进行哈夫曼编码CrtHuffmanCode(ht,hc,n)输出每一个字母所对应的哈夫曼编码Printf(hc,n,data,alldata,count)对输入(文件中)的文字进行哈夫曼加密showall(hc,alldata,count,data,n)精彩文档实用标准文案1、数据结构此函数中运用到的数据结构知识就是哈夫曼树的建立以及遍历,建立主要就是每一次选择权
3、值最小的两个数并将其求和,然后用他们的和代替这两个数,再进行求两个最小值,最后构成一个哈夫曼数;遍历是采用从叶子结点开始向根节点确定唯一的路径。2、主要函数:(1)voidCrtHuffmantree(HuffmanTree&ht,intw[],intn),功能是建立一个哈夫曼树;(2)voidCrtHuffmanCode(HuffmanTreeht,HuffmanCodehc,intn),功能是计算哈夫曼编码;(3)voiddianwen(intcount[],charalldata[]),功能是统计输入电文的字母种类以及频率;
4、(4)intfcount(charalldata[],chardata[],intcount[]),功能是统计打开文件中出现的字母的种类以及频率;(5)voidshowtime(),功能是查看系统当前的时间;(6)intsearch(charch,chardata[],intn),查询电文中的每一个字母所对应得哈夫曼编码的下标;(7)voidPrintf(HuffmanCode&hc,intn,chardata[],charalldata[],intcount[]),功能是输出每一个字母所对应的哈夫曼编码;(8)voidshowa
5、ll(HuffmanCodehc,charalldata[],intcount[],chardata[],intn),功能是输出经过加密后的密文。一、源代码精彩文档实用标准文案#include#include#include#include#defineN27//定义最大叶子结点个数#defineM2*N-1typedefstruct//定义哈夫曼结构体{intweight;intparent;精彩文档实用标准文案intLChild;intRChild;}H
6、TNode,HuffmanTree[M+1];//0号单元不用typedefchar*HuffmanCode[N+1];//存储哈夫曼编码串的头指针//调用系统的时间voidshowtime(){time_tt;tm*tp;t=time(NULL);tp=localtime(&t);printf("ttt%d/%d/%d",tp->tm_mon+1,tp->tm_mday,tp->tm_year+1900);printf("ttt%d:%d:%d",tp->tm_hour,tp->tm_min,tp
7、->tm_sec);}//**************计算电文中各个英文字母出现的次数*******************voiddianwen(intcount[],charalldata[]){intn,i;printf("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓");printf("tttt请输入电文:");fflush(stdin);for(i=0;i<27;i++)//将数组计数器初始化count[i]=0;printf("%c",7);alldata[0
8、]=getchar();while(alldata[count[0]]!=''){n=(alldata[count[0]]-'a')+1;count[n]++;count[0]++;//所有字母的总个数alldata[count[0]]=get