游程编码C语言

从文件中读取下列二元编码00001110010101100001110001110001111010,实现其游程编码,然后再对游程序列进行哈弗曼编码。

结果保存在out.dat中。

程序代码:

#include

#include

#include

struct node{

int id;

int num;

double probability;

};

typedef struct{

double weight;

int parent,lchild,rchild;

}HuffmanTree;

void Select(HuffmanTree *HT,int i,int *s1,int *s2)

{

int n,T=0,T1;

for(n=1;n

if((HT[n].weight<=HT[T].weight)&&HT[n].parent==0)

T=n;

*s1=T;

T1=T;

T=0;

for(n=1;n

{

if(n==T1) continue;

if((HT[n].weight<=HT[T].weight)&&HT[n].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;

HT[0].weight=10000;

w++;

for(p=HT+1,i=1;i<=n;++i,++p,++w)

{

p->weight=*w;

p->lchild=0;

p->rchild=0;

p->parent=0;

}

for(;i<=m;++i,++p)

{

p->weight=0;

p->lchild=0;

p->rchild=0;

p->parent=0;

}

for(i=n+1;i<=m;++i)

{

Select(HT,i,&s1,&s2);

HT[s1].parent=i;

HT[s2].parent=i;

HT[i].lchild=s1;

HT[i].rchild=s2;

HT[i].weight=HT[s1].weight+HT[s2].weight;

}

cd=malloc(n*sizeof(char));

cd[n-1]='\0';

for(i=1;i<=n;++i)

{

start=n-1;

for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent)

if(HT[f].lchild==c)

cd[--start]='1';

else

cd[--start]='0';

HC[i]=(char *)malloc((n-start)*sizeof(char));

strcpy(HC[i],&cd[start]);

}

free(cd);

}

void initstruct(struct node p[],int T)

{

int i;

for(i=1;i<=T;i++)

{

p[i].id=0;

p[i].num=0;

p[i].probability=0.0;

}

}

int getI(struct node p[],int e,int T)

{

int i;

for(i=1;i<=T;i++)

{

if(p[i].id==e)

return i;

}

return -1;

}

void count(struct node p[],int T)

{

int i;

for(i=1;i<=T;i++)

{

p[getI(p,p[i].id,T)].num++;

}

}

int countevent(struct node p[],int T)

{

int i,n=0;

for(i=1;i<=T;i++)

{

if(p[i].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(p[i].num!=0)

p2[n++]=p[i];

}

}

void

c语言 游程编码,游程编码C语言.doc相关推荐

  1. c语言综合性实验数字益智游戏排行榜,C语言综合性实验报告1.doc

    C语言综合性实验报告1.doc 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 C程序设计 实验学期 至 学年 第 学期 学生所在系部 年级 专业班级 学生姓名 学号 任课教师 实验成绩 计 ...

  2. c语言switch循环语序,C语言初学者常见错误统计.doc

    C语言初学者常见错误统计.doc C语言初学者常见错误统计 被偏爱程度触犯人次错误类型 ★★★★17使用未定义的变量★★★★16变量值溢出★★★9一行C语句后面漏掉:★★★8语序颠倒★★★6混淆字符常 ...

  3. c语言小学生加法考试题程序4,c语言编程题及答案.doc

    c语言编程题及答案.doc C C 语言编程题及答案(三)语言编程题及答案(三) 1. 给小学生出加法考试题 编写一个程序,给学生出一道加法运算题,然后判断学生输入的答案对错与否,按下列 要求以循序渐 ...

  4. 闽高校计算机二级c语言模拟器,闽高校计算机二级C语言模拟卷及答案.doc

    闽高校计算机二级C语言模拟卷及答案.doc (54页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 一.单项选择题(每小题2分,共20分) ...

  5. c语言中字符 12是多少,c语言中字符串的讲解(DOC可编).doc

    c语言中字符串的讲解(DOC可编).doc 第一部分:字符串的概念 ---字符串:用双引号引起来的一串字符.在C语言,系统将自动的为字符串添加一个结束标志\0 ,该结束标志不作为字符串的实际长度,但作 ...

  6. c语言程序设计字符处理周信东,“电子科技大学出版社(周信东主编)”的C语言程序设计实验-整理代码-.doc...

    "电子科技大学出版社(周信东主编)"的C语言程序设计实验-整理代码-.doc -前言- /*非常感谢度?娘以及各位?网上C语言?高手的支持?,才能让敝人?完成此文档?的整理. 本文 ...

  7. c语言编程算法精选,c语言经典程序算法【DOC精选】.doc

    c语言经典程序算法[DOC精选] c语言经典程序算法 浏览次数:47017次悬赏分:15 | 解决时间:2007-9-14 10:02 | 提问者:liyufei05j3 最佳答案 经典C源程序100 ...

  8. 线性分组码c语言实验报告,C语言线性分组码(附注释).doc

    C语言线性分组码(附注释).doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该 ...

  9. 谈一下对c语言程序设计,谈《C语言程序设计》课程教学.doc

    谈<C语言程序设计>课程教学.doc 谈<C语言程序设计>课程教学 摘要:C语言作为入门级的编程语言,已经被越来越多的学生所重视,然而在当前的<C语言程序设计>课程 ...

  10. C语言模拟11答案,C语言模拟试题11答案.doc

    C语言模拟试题11答案.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档 ...

最新文章

  1. 视频直播营销时代已来,企业该如何把握这波红利?
  2. .NET获取机器信息
  3. git 源代码自动检查_检查提交(git log,git show)《 Nest.js 应用案例:源代码管理 》...
  4. windows fromdatagrid双击行或者行的内容_一些提升windows办公,编写代码的神器 carnac,Total commander...
  5. pytorch新手需要注意的隐晦操作Tensor,max,gather
  6. Paip. DDBS 分布式 数据库系统 attilax总结C0G
  7. BGLL算法 C++实现
  8. 移动页面常用media尺寸
  9. LabVIEW编程LabVIEW控制研华PCI-1739U例程与相关资料
  10. Liang-Barsky算法剪裁实例
  11. Asp.Net 企业微信JS-SDK开发(随手笔记)
  12. 孩子被人欺负了,要不要打回去?非常赞同这位宝妈的做法
  13. vbs脚本和windows定时任务实现qq消息表情包定时发送
  14. 移动通信核心网技术总结(一)语音与上网业务的实现
  15. 什么是框架,框架和设计模式的关系,为什么要用框架?(转)
  16. js简单交互动画,运动吧
  17. 程序员生存定律-打造属于自己的稀缺性
  18. Chrome with proxy
  19. C语言基础代码(10题)
  20. CVE和全球安全漏洞库(NVD, CNNVD, CNVD) 在软件安全检测和验收中的最佳分析工具

热门文章

  1. 组合数学之三 —— 生成函数
  2. Oracle财务管理系统
  3. 怎样做好微商 怎样推广引流客源效果好
  4. 用OOP设计以下场景。太阳发出太阳光,照射在墙壁上,在地面形成影子。
  5. xmind2020激活教程_思维导图软件XMind 2020 v10.2.1中文版的官网下载、安装与序列号注册文件激活教程-推荐实用小软件 -亦是美网络...
  6. 嵌入式C语言数据类型
  7. ai中如何插入签名_如何在PDF文件中插入手写签名?手把手教会你,轻松设置签名...
  8. 纪念非线性光学诞生:Peter Franken和非线性光学
  9. 基于阿里云的系统灾备方法架构与安全应急预案介绍
  10. php还原时间戳,如何将php时间戳转换回日期