哈夫曼编码编译器

哈夫曼编码编译器

ID:39998384

大小:100.85 KB

页数:13页

时间:2019-07-16

哈夫曼编码编译器_第1页
哈夫曼编码编译器_第2页
哈夫曼编码编译器_第3页
哈夫曼编码编译器_第4页
哈夫曼编码编译器_第5页
资源描述:

《哈夫曼编码编译器》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用文档一、课题:哈夫曼编码编译器设计一个哈夫曼编码/译码系统,对一个文本文件中的字符进行哈夫曼编码,生成编码文件(压缩文件,后缀名.cod);反过来,可将一个压缩文件译码还原为一个文本文件(.txt)。二、功能(1)输入一个待压缩的英文文本文件,统计文本文件中各字符的个数作为权值,生成哈夫曼树;(2)将文本文件利用哈夫曼树进行编码,生成压缩文件(后缀名cod)(3)输入一个待解压的压缩文件名称,并利用相应的哈夫曼树将编码序列译码。三、程序结构程序流程图执行程序选择(0)退出选择(1)编码选择(

2、2)译码输入要编码文件输入要译码文件名编码译码保存编码后的文件保存译码后的文件文案大全实用文档文字说明Main函数:Coding()编码函数TransCode()译码函数Coding()编码函数:clearscreen()清屏函数Open()打开源码文件SearchStr()查找字符串中不同的字符及其出现的次数CreatHFMTree()用每个字符出现的次数作为叶子节点的权值建立哈夫曼树HFMCode()利用哈夫曼树对每个叶子节点进行编码,存入编码表中TotalCoding()利用编码表对字符串

3、进行最终编码Save()保存最终的哈夫曼编码TransCode()译码函数:clearscreen()清屏函数Open()打开编码文件DeCoding();//将编码进行解码存入字符串数组中Save();//保存译码后的字符串四、算法说明1.执行界面文案大全实用文档可供三个选择(1)编码(2)译码(3)退出执行(1)选择需要输入要编译的文件名文案大全实用文档需要输出编码保存文件名选择(1)执行完毕执行(2)选项文案大全实用文档输入要译码的编码文件名并输入保存的文件名选择(2)执行完毕执行(0)则

4、退出该程序文案大全实用文档五、报告总结该程序主要采用了哈夫曼编码译码方法,对txt文件进行编译压缩,同时也能对编码后的文件进行解码,程序结构清晰,主干分两大部分:编码部分与解码部分,各部分通过调用函数合理清晰的实现其功能。程序中运用了一些文件的C语言基本操作,例如打开文件open()、保存文件save()函数,但程序上对文件类型的处理还有一些缺点,不能实现文件类型的自动保存,需要输入文件名字和类型。通过这次课程设计,不仅提高了自己的编程能力,还让我知道自己在编程方面的缺点,我以后会更加努力扩大自

5、己的知识面提高自己的编程能力。#include#include#include#defineM10000//定义字符串最大长度#defineN128//定义叶子节点个数typedefstructnode//定义哈夫曼树节点结构体{intweight;structnode*LChild,*RChild,*Parent;//分别指向该节点的左孩子,右孩子,和双亲节点structnode*next;//指向建立的哈夫曼树的下一个节点}HFMNo

6、de,*HFMTree;文案大全实用文档typedefstruct//定义哈夫曼编码的结构体{charch;//存储对应的字符charcode[N+1];//存储对应字符的编码intstart;//存储编码的起始位置}CodeNode;intn;//存储真正叶子节点个数voidclearscreen(){system("cls");}voidOpen(chars[])//打开存放字符或编码的文件,将其存入字符串数组中{charname[10];FILE*fp;inti=0;printf("请输入

7、要打开的文件名:");gets(name);//要打开的文件名if((fp=fopen(name,"rt"))==NULL){printf("打开失败!");//若打开失败,则直接退出exit(1);}s[i++]=fgetc(fp);while(s[i-1]!=EOF)s[i++]=fgetc(fp);s[i]='';//存取字符串结束fclose(fp);}voidSave(chars[])//保存字符或编码到文件中{charname[10];FILE*fp;文案大全实用文档prin

8、tf("请输入要保存的文件名:");gets(name);if((fp=fopen(name,"wt"))==NULL){printf("存储失败!");exit(1);}fputs(s,fp);printf("保存成功,文件名为:%s。",name);printf("按回车键继续...");getchar();fclose(fp);}voidSearchStr(chars[],charstr[],intcount[]){//查找字符串中字符的个数和每个字符出现的次数inti,j,k

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。