




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
从文件中读取下列二元编码00001110010101100001110001110001111010,实现其游程编码,然后再对游程序列进行哈弗曼编码。结果保存在out.dat中。程序代码:#include#include#includestruct nodeint id;int num;double probability;typedef structdouble weight;int parent,lchild,rchild;HuffmanTree;void Select(HuffmanTree *HT,int i,int *s1,int *s2)int n,T=0,T1;for(n=1;ni;n+)if(HTn.weight=HTT.weight)&HTn.parent=0)T=n;*s1=T;T1=T;T=0;for(n=1;ni;n+)if(n=T1) continue;if(HTn.weight=HTT.weight)&HTn.parent=0)T=n;*s2=T;void HuffmanCoding(HuffmanTree *HT,char *HC,double *w,int n)int m,i,start;int s1,s2,f,c;char *cd;HuffmanTree *p;if(n=1) return;m=2*n-1;HT0.weight=10000;w+;for(p=HT+1,i=1;iweight=*w;p-lchild=0;p-rchild=0;p-parent=0;for(;iweight=0;p-lchild=0;p-rchild=0;p-parent=0;for(i=n+1;i=m;+i)Select(HT,i,&s1,&s2);HTs1.parent=i;HTs2.parent=i;HTi.lchild=s1;HTi.rchild=s2;HTi.weight=HTs1.weight+HTs2.weight;cd=malloc(n*sizeof(char);cdn-1=0;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=1;elsecd-start=0;HCi=(char *)malloc(n-start)*sizeof(char);strcpy(HCi,&cdstart);free(cd);void initstruct(struct node p,int T)int i;for(i=1;i=T;i+)pi.id=0;pi.num=0;bability=0.0;int getI(struct node p,int e,int T)int i;for(i=1;i=T;i+)if(pi.id=e)return i;return -1;void count(struct node p,int T)int i;for(i=1;i=T;i+)pgetI(p,pi.id,T).num+;int countevent(struct node p,int T)int i,n=0;for(i=1;i=T;i+)if(pi.num!=0)n+;return n;void order(struct node p,struct node p2,int T)int i,n=1;for(i=1;i=T;i+)if(pi.num!=0)p2n+=pi;void calculateprobability(struct node p2,int T)int i,sum=0;for(i=1;i=T;i+)sum=sum+p2i.num;for(i=1;i=T;i+)bability=p2i.num/1.0/sum;void main()int n=0,m=0,i=1,t;char ch1,ch2=#;char *HC;FILE *fp1,*fp2;struct node *p,*p2;HuffmanTree *HT;double *w;if(fp1=fopen(in.dat,rb)=NULL)printf(不能打开文件!n);exit(1);if(fp2=fopen(out.dat,a)=NULL)printf(不能打开文件!n);exit(1);fprintf(fp2,n对于二元序列:);doch1=fgetc(fp1);if(ch1!=EOF)fprintf(fp2,%c,ch1);elsefprintf(fp2,n);n+;if(ch1!=ch2)m+;ch2=ch1;while(ch1!=EOF);fclose(fp1);if(fp1=fopen(in.dat,rb)=NULL)printf(不能打开文件!n);exit(1);t=m-1;p=(struct node *)malloc(m)*sizeof(struct node);initstruct(p,t);n=m=0;doch1=fgetc(fp1);n+;if(ch1!=ch2)if(n!=1)pi+.id=n-m;m=n;ch2=ch1;while(ch1!=EOF);fclose(fp1);fprintf(fp2,游程序列为:);for(i=1;i=t;i+)fprintf(fp2,%d,pi.id);fprintf(fp2,n);count(p,t);p2=(struct node *)malloc(countevent(p,t)+1)*sizeof(struct node);order(p,p2,t);calculateprobability(p2,countevent(p,t);HT=malloc(countevent(p,t)*sizeof(HuffmanTree);HC=malloc(countevent(p,t)+1)*sizeof(char *);w=(double *)malloc(countevent(p,t)+1)*sizeof(double);t=countevent(p,t);for(i=1;i=t;i+)wi=bability;for(i=1;i=t;i+)pi=p2i;HuffmanCoding(HT,HC,w,t);fprintf(fp2,该信源的Huffma
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 压力管道培训课件合集
- 2025年制造业行业智能制造技术应用前景研究报告
- 商场员工消防安全培训课件
- 2025年工业0行业智能制造技术应用前景研究报告
- 压力容器维修安全培训课件
- 2025年人工智能在医疗健康领域应用前景预测报告
- 国家事业单位招聘2025民族文化宫招聘拟聘用人员(第三批)笔试历年参考题库附带答案详解
- 国家事业单位招聘2025商务部配额许可证事务局第一次招聘15人笔试历年参考题库附带答案详解
- 北京市2025北京人民艺术剧院招聘6人笔试历年参考题库附带答案详解
- 东莞市2025广东东莞市自然资源局黄江分局招聘合同制聘员笔试历年参考题库附带答案详解
- 福建省全国名校联盟2026届高三上学期联合开学摸底考试语文试题及参考答案
- 2025年广工建筑电气试卷及答案
- 2024年广西桂林理工大学南宁分校招聘真题
- 排污许可证管理条例课件
- 乡镇人大主席“干在实处、走在前列”学习讨论发言材料
- 2025年食品安全管理员考试题库及参考答案
- 用户反馈收集及问题分析表
- 无人机飞行操作规范手册
- 【里斯】年轻一代新能源汽车消费洞察与预测 -新物种 新理念 新趋势(2024-2025)
- 医院收费室培训课件
- 信仰思政课件
评论
0/150
提交评论