收藏 分享(赏)

数据结构哈夫曼编码实现.doc

上传人:dreamzhangning 文档编号:2280433 上传时间:2018-09-09 格式:DOC 页数:6 大小:50.50KB
下载 相关 举报
数据结构哈夫曼编码实现.doc_第1页
第1页 / 共6页
数据结构哈夫曼编码实现.doc_第2页
第2页 / 共6页
数据结构哈夫曼编码实现.doc_第3页
第3页 / 共6页
数据结构哈夫曼编码实现.doc_第4页
第4页 / 共6页
数据结构哈夫曼编码实现.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、#include#includetypedef struct hahaint weight;int parent,lchild,rchild,flag;char data;haha,*friday;typedef struct hehechar m;int n;struct hehe *next;hehe,*zhouwu;typedef char * *gege;void begin(zhouwu int flag;l=(zhouwu)malloc(sizeof(hehe);l-next=NULL;l-n=0;r=p=q=l;printf(“请输入要编码的字符串: “);for(int i=0

2、; ; )p=(zhouwu)malloc(sizeof(hehe);p-n=0;p-m=getchar();if(p-m=n)break;flag=0;while(r-next!=NULL)if(r-next-m=p-m)r-next-n+;flag=1;free(p);break;elser=r-next;if(flag=0)p-next=q-next;p-n+;q-next=p;q=p;l-n+;r=l;void select(friday for(int h=1;hhti.weight)first=hti.weight;jm=i;x=j0;y=j1;m+;htx.flag=1;if(m

3、=2)hty.flag=1;void huffmancoding(friday m=2*l-n-1;ht=(friday)malloc(m+1)*sizeof(haha);friday p;zhouwu q=l;int i;for(p=ht+1,i=1;in;+i,+p)p-weight=q-next-n;p-flag=0;p-parent=0;p-lchild=0;p-rchild=0;p-data=q-next-m;q=q-next;for( ;iflag=0;p-weight=0;p-parent=0;p-lchild=0;p-rchild=0;p-data=NULL;int s1,s2

4、;for(i=l-n+1;in+1)*sizeof(char *);char *cd;cd=(char *)malloc(l-n*sizeof(char);cdl-n-1=0;int c,f,start;for(i=1;in;+i)start=l-n-1;for(c=i,f=hti.parent;f!=0;c=f,f=htf.parent)if(htf.lchild=c)cd-start=0;elsecd-start=1;hci=(char *)malloc(l-n-start)*sizeof(char);int q=start;for(int d=0;dn-start;d+)hcid=cdq

5、+;free(cd);for(i=1;in;i+)printf(“字符 %c 的编码是: %sn“,hti.data,hci);void translate(friday int k,j=l-n;int i=2*j-1,flag=0;printf(“请输入密文编码: “);gets(m);printf(“n 译码后是: “);for(int c=0; ;c+)if(mc=0)break;if(mc=0)k=hti.lchild;if(mc=1)k=hti.rchild;if(mc!=0printf(“n 输入的密文必须是由字符 0 和 1 组成n“);return;i=k;if(htk.lch

6、ild=0i=2*j-1;flag=1;if(flag=0)system(“cls“);printf(“密文没有相应的译码对应。n“);void main()zhouwu l;friday ht;printf(“该程序是对字符串进行编码,和对一串编码进行翻译。nnn“);begin(l);while(l-n=1)printf(“编码的字符串长度必须大于 1n“);begin(l);huffmancoding(ht,l);printf(“编码成功n 将进行译码操作 n“);translate(ht,l);char a;printf(“n 是否继续译码(y/Y): “);scanf(“%c“,while(a!=ntranslate(ht,l);printf(“n 是否继续译码(y/Y): “);scanf(“%c“,程序功能展示:编码操作:译码操作:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报