ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:44.29KB ,
资源ID:17600876      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17600876.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(哈弗曼编码完整版Word文件下载.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

哈弗曼编码完整版Word文件下载.docx

1、#define MAXSIZE1 50#define MAXSIZE2 500int t,count,num; uint wMAXSIZE1;char cMAXSIZE1,dataMAXSIZE2;typedef struct char ch;unsigned int weight;unsigned int parent,lchild,rchild;HTNode,*HuffmanTree;typedef char *HuffmanCode;/*/void Start_Screen() printf( nn); |-|n |-| n |-|n | |n | 005 哈夫曼编译码 |n | |n

2、| |n | 006 1哈夫曼编码 |n | 016 2显示哈夫曼编码 |n | 016 3输入文本编译报文 |n | 016 4输入报文编译文本 |n | 016 5已有文本编译报文 |n | 016 6已有报文编译文本 |n | 016 7退出系统 |n | 制作人:邓俊辉 |n |-|n 016 请输入您的选择选择: scanf(%d,&t);/选择权值最小且parent为0的二叉树,返回其序号int Min(HuffmanTree bt,int m) int i,temp; uint k; for(i=0;im;i+) /取k等于首个parent为0的权值 if(bti.parent=

3、0) k=bti.weight; temp=i; break; for(i=i+1;i+) /逐个与其他权值进行比较,并返回在parent为0下权值最小的序号 if(bti.weight ch=ci;weight=wi;parent=0;lchild=p-rchild=-1; /初始化二叉树结点,parent置为0,lchild,rchild均置为-1 p+; for(i=n;num;i+) /构造n-1个空二叉树用于存储新树根结点ch=*;i+) Select(*HT,i,&s1,&s2); (*HT)s1.parent=(*HT)s2.parent=i; (*HT)i.lchild=s1;

4、 (*HT)i.rchild=s2; (*HT)i.weight=(*HT)s1.weight + (*HT)s2.weight;/从叶子节点到根节点逆向求哈弗曼编码HuffmanCode HuffmanCoding(HuffmanTree HT,int n) int i,f,top; uint t; HuffmanCode HC; char *hc; HC=(HuffmanCode )malloc(n*sizeof(char *); /动态申请指针存储哈夫曼编码 hc=(char *)malloc(n*sizeof(char); /申请哈夫曼编码的工作空间 hcn-1=0 top=n-1;

5、t=i; f=HTi.parent; while(f!=0) if(HTf.lchild = t) hc-top=0 else hc-top=1 t=f; f=HTt.parent; HCi=(char *)malloc(n-top)*sizeof(char); /为已申请的指针分配一维数组存储哈夫曼编码 strcpy(HCi,&hctop); free(hc); return HC;/输出哈夫曼树void PrintHuffmanTree(HuffmanTree ht,int n) int i,m; m=2*n-1;t哈夫曼树及哈弗曼编码nn 序号 字符 权值 双亲 左孩子 右孩子n pri

6、ntf( %2d %c %5d,i,hti.ch,hti.weight); %5d %5d %5dn,hti.parent,hti.lchild,hti.rchild);/输出哈夫曼编码void PrintHuffmanCode(HuffmanTree ht,HuffmanCode hc,int n) int i; 字符t哈弗曼编码n %c %sn,ht-ch,hci); ht+;nnnnnnnnn/将哈夫曼树的初始信息写入文件void WriteHuffmanTree() FILE *fp; uint we; char ch;请输入你需要的字符和权值,用#结束输入:n if(fp=fopen

7、(DataFile.data,w)=NULL)nError on open %s!a exit(1);n%cch); while(ch!=#) scanf(we); fprintf(fp,%c,ch);%5dn,we); ch=getchar(); fclose(fp);/读哈夫曼树的初始信息void ReadHuffmanTree() int i=0; count=0;r /表示程序非正常退出 while(!feof(fp) fscanf(fp,ci); if(ci=n) continue; /读到换行符,跳过,读下一行%5dwi); count+; i+;/将内容写入文件void Writ

8、eDataFile(char *fileName) num=0; if(fp=fopen(fileName,fileName); num+;/读文件内容void ReadDataFile(char *fileName) if(datai=) continue;datai); datai=/编码,用已及建好的哈夫曼树,对所输入的文件进行编码形成报文void EnCoding(HuffmanCode hc) int i=0,j;请输入您需要进行编码的文本,以#结束: WriteDataFile(ToBeTran.data ReadDataFile(Code.txt ) putchar( for(j

9、=0;jlchild!=-1) p=&htp-lchild; else if(datai=rchild!rchild; else fprintf(fp,p- printf( if(datai! i-;/编码,用已及建好的哈夫曼树,对已有的文件进行编码形成报文void AlEnCoding(HuffmanCode hc) FILE *fp1,*fp2; if(fp1=fopen(feof(fp1) datai=fgetc(fp1); num=i; fclose(fp1); if(fp2=fopen( fprintf(fp2, printf( break; fclose(fp2);/译码,用用已及

10、建好的哈夫曼编码,对已有的报文进行解译形成文本void AlDeCoding(HuffmanTree ht)an datai-1= putchar( continue; fprintf(fp2, p=& if(datai! i-;void main() HuffmanTree HT; Start_Screen(); ReadHuffmanTree(); /读哈夫曼树原始信息 CreateHuffmanTree(&HT,count); /创建哈夫曼树 HC=HuffmanCoding(HT,count); /创建哈夫曼编码 while(1) switch(t) case 1: WriteHuff

11、manTree(); /更新哈夫曼树信息 ReadHuffmanTree(); /读哈夫曼树初始化信息 CreateHuffmanTree(& HC=HuffmanCoding(HT,count); case 2: PrintHuffmanTree(HT,count); /输出哈夫曼树 PrintHuffmanCode(HT,HC,count); /输出哈夫曼编码 exit(0); /表示程序正常退出 case 3: EnCoding(HC); /编码,对所输入的文本进行编码形成报文 case 4: DeCoding(HT); /译码,对所输入的报文进行解译形成文本 case 5: AlEnC

12、oding(HC); /编码,对所已有的文本进行编码形成报文 case 6: AlDeCoding(HT); /译码,对所已有的报文进行解译形成文本 case 7: exit(0); default:a system(cls Start_Screen(); Start_Screen(); 七、 实验结果:运行后各文件内容如下:DataFile.data文件A 64 B 13 C 22 D 32 E 103 F 21 G 15 H 47 I 57 J 1 K 5 L 32 M 20 N 57 O 63 P 15 Q 1 R 48 S 51 T 80 U 2 3 V 8 W 18 X 1 Y 16 Z 1 138CodeFile.data文件111010*00110 1010110001000010010010011001000100101001111100 101010110100110 1010111111001000111 1010111111101010010001101100100010001101111010100ToBeTran.data文件THIS PROGRAM IS MY FAVORITECode.txt文件110100*1111100010001010011000010010101011001011101100011111110010100011

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1