电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

哈夫曼编码编译器VIP免费

哈夫曼编码编译器_第1页
哈夫曼编码编译器_第2页
哈夫曼编码编译器_第3页
一、课题:哈夫曼编码编译器设计一个哈夫曼编码/译码系统,对一个文本文件中的字符进行哈夫曼编码,生成编码文件(压缩文件,后缀名.cod);反过来,可将一个压缩文件译码还原为一个文本文件(.txt)。二、功能(1)输入一个待压缩的英文文本文件,统计文本文件中各字符的个数作为权值,生成哈夫曼树;(2)将文本文件利用哈夫曼树进行编码,生成压缩文件(后缀名cod)(3)输入一个待解压的压缩文件名称,并利用相应的哈夫曼树将编码序列译码。三、程序结构程序流程图选择(1)编码选择(0)退出执行程序输入要编码文件选择(2)译码输入要译码文件名保存编码后的文件保存译码后的文件编码译码文字说明Main函数:Coding()编码函数TransCode()译码函数Coding()编码函数:clearscreen()清屏函数Open()打开源码文件SearchStr()查找字符串中不同的字符及其出现的次数CreatHFMTree()用每个字符出现的次数作为叶子节点的权值建立哈夫曼树HFMCode()利用哈夫曼树对每个叶子节点进行编码,存入编码表中TotalCoding()利用编码表对字符串进行最终编码Save()保存最终的哈夫曼编码TransCode()译码函数:clearscreen()清屏函数Open()打开编码文件DeCoding();//将编码进行解码存入字符串数组中Save();//保存译码后的字符串四、算法说明1.执行界面可供三个选择(1)编码(2)译码(3)退出执行(1)选择需要输入要编译的文件名需要输出编码保存文件名选择(1)执行完毕执行(2)选项输入要译码的编码文件名并输入保存的文件名选择(2)执行完毕执行(0)则退出该程序五、报告总结该程序主要采用了哈夫曼编码译码方法,对txt文件进行编译压缩,同时也能对编码后的文件进行解码,程序结构清晰,主干分两大部分:编码部分与解码部分,各部分通过调用函数合理清晰的实现其功能。程序中运用了一些文件的C语言基本操作,例如打开文件open()、保存文件save()函数,但程序上对文件类型的处理还有一些缺点,不能实现文件类型的自动保存,需要输入文件名字和类型。通过这次课程设计,不仅提高了自己的编程能力,还让我知道自己在编程方面的缺点,我以后会更加努力扩大自己的知识面提高自己的编程能力。#include#include#include#defineM10000//定义字符串最大长度#defineN128//定义叶子节点个数typedefstructnode//定义哈夫曼树节点结构体{intweight;structnode*LChild,*RChild,*Parent;//分别指向该节点的左孩子,右孩子,和双亲节点structnode*next;//指向建立的哈夫曼树的下一个节点}HFMNode,*HFMTree;typedefstruct//定义哈夫曼编码的结构体{charch;//存储对应的字符charcode[N+1];//存储对应字符的编码intstart;//存储编码的起始位置}CodeNode;intn;//存储真正叶子节点个数voidclearscreen(){system("cls");}voidOpen(chars[])//打开存放字符或编码的文件,将其存入字符串数组中{charname[10];FILE*fp;inti=0;printf("请输入要打开的文件名:");gets(name);//要打开的文件名if((fp=fopen(name,"rt"))==NULL){printf("打开失败!\n");//若打开失败,则直接退出exit(1);}s[i++]=fgetc(fp);while(s[i-1]!=EOF)s[i++]=fgetc(fp);s[i]='\0';//存取字符串结束fclose(fp);}voidSave(chars[])//保存字符或编码到文件中{charname[10];FILE*fp;printf("请输入要保存的文件名:");gets(name);if((fp=fopen(name,"wt"))==NULL){printf("存储失败!");exit(1);}fputs(s,fp);printf("\n保存成功,文件名为:%s。\n",name);printf("\n按回车键继续...");getchar();fclose(fp);}voidSearchStr(chars[],charstr[],intcount[]){//查找字符串中字符的个数和每个字符出现的次数inti,j,k=0;for(i=0;i

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

文章天下+ 关注
实名认证
内容提供者

各种文档应有尽有

确认删除?
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群