欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    哈夫曼编码译码系统.docx

    • 资源ID:3092718       资源大小:37.80KB        全文页数:4页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    哈夫曼编码译码系统.docx

    哈夫曼编码译码系统自己用c+写的哈夫曼编码/译码系统,经过反复测试,绝对没问题,请放心使用。 3、哈夫曼编码/译码系统 问题描述 利用哈夫曼编码进行通信,可以压缩通信的数据量,提高传输效率,缩短信息的传输时间,还有一定的保密性。现在要求编写一程序模拟传输过程,实现在发送前将要发送的字符信息进行编码,然后进行发送,接收后将传来的数据进行译码,即将信息还原成发送前的字符信息。 实现提示 在本例中设置发送者和接受者两个功能, 发送者的功能包括: 输入待传送的字符信息; 统计字符信息中出现的字符种类数和各字符出现的次数; 根据字符的种类数和各自出现的次数建立哈夫曼树; 利用以上哈夫曼树求出各字符的哈夫曼编码; 将字符信息转换成对应的编码信息进行传送。 接受者的功能包括: 接收发送者传送来的编码信息; 利用上述哈夫曼树对编码信息进行翻译,即将编码信息还原成发送前的字符信息。 从以上分析可发现,在本例中的主要算法有三个: 哈夫曼树的建立; 哈夫曼编码的生成; 对编码信息的翻译。 测试结果 源代码 #include<iostream.h> #include<iomanip.h> #include<string.h> #include <windows.h> typedef struct int weight; int parent,lchild,rchild; char data; HTNode,*HuffmanTree; typedef char *HuffmanCode; void tongji(char *a,int *w,char *d,int &n) int j=0; for(int i=0;i<100&&ai!='0'i+) for(int k=0;k<j;k+) if(ai=dk) wk+; break; if(k=j) dj=ai; wj+; j+; n=j; dj='0' void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int *w,int n,char *d) if(n<=1)return; int m=2*n-1; HT=new HTNodem+1; HuffmanTree p; int i; for(p=HT+1,i=1;i<=n;i+,+p) p->data=di-1; p->lchild=p->parent=p->rchild=0; p->weight=wi-1; for(;i<=m;+i,+p) p->lchild=p->parent=p->rchild=0; p->weight=0; for(i=n+1;i<=m;+i) int s1,s2,u,t; for (u=1;u<=i-1;u+)if(HTu.parent=0)s1=u;break; for(u=u+1;u<=i-1;u+) if(HTs1.weight>HTu.weight&&HTu.parent=0) s1=u; for(t=1;t<=i-1;t+) if(HTt.parent=0&&t!=s1)s2=t;break; for(t=t+1;t<=i-1;t+) if(HTs2.weight>HTt.weight&&HTt.parent=0&&t!=s1) s2=t; HTs1.parent=i;HTs2.parent=i; HTi.lchild=s1;HTi.rchild=s2; HTi.weight=HTs1.weight+HTs2.weight; HC=new char*n+1; char *cd=new charn; cdn-1='0' int start,c,f; for(i=1;i<=n;+i) start=n-1; for(c=i,f=HTi.parent;f!=0;c=f,f=HTf.parent) if(HTf.lchild=c) cd-start='0' else cd-start='1' HCi=new charn-start; strcpy(HCi,&cdstart); delete(cd); void bianma(HuffmanCode HC,char *a,char *d,char *bc) int m1=0,m2=0; int i=0,j; while(ai!='0') j=0; while(dj!='0') if (ai=dj) m1=0; while(HCj+1m1!='0') bcm2+=HCj+1m1+; break; j+; i+; bcm2='0' void yima(HuffmanTree HT,int n,char*bc) int m=2*n-1; for (int i=0;bci!='0'+i) if (HTm.lchild=0) cout<<HTm.data; m=2*n-1; if(bci='0') m=HTm.lchild; else m=HTm.rchild; cout<<HTm.data<<endl; void main char a100; char d100;char bc1000; int w100,n=0; HuffmanTree HT; HuffmanCode HC; cout<<"请输入字符:n" cin>>a; for(int ak=0;ak<100;ak+)wak=0; tongji(a,w,d,n); HuffmanCoding(HT,HC,w,n,d); cout<<"霍夫曼编码为:"<<endl; cout<<"原码 "<<"权值 "<<"二进制码"<<endl; for(int s=0;s<n;s+)cout<<ds<<" "<<ws<<" "<<HCs+1<<endl; bianma(HC,a,d,bc); cout<<"密文为:" cout<<bc<<endl; cout<<"开始译码:"<<endl; yima(HT,n,bc);

    注意事项

    本文(哈夫曼编码译码系统.docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开