满意答案

Otwjlobz

2014.01.05

采纳率:58%    等级:12

已帮助:9509人

这是我当时做的作业题,就是数据结构书上的那道题。不知道是否和你说的是同样一道题,代码如下:

/*

HuffmanCode BY Turbo C 2.0

Filename: Huffman.c

Author: dcyu.

Ver 1.00

*/

#include

#include

#include

#include

#include

typedef struct {

unsigned int weight;

unsigned int parent,lchild,rchild;

} HTNode,*HuffmanTree;

typedef char **HuffmanCode;

typedef struct {

unsigned int s1;

unsigned int s2;

} MinCode;

void Error(char *message);

HuffmanCode HuffmanCoding(HuffmanTree HT,HuffmanCode HC,unsigned int *w,unsigned int n);

MinCode Select(HuffmanTree HT,unsigned int n);

void Error(char *message)

{

fprintf(stderr,"Error:%s\n",message);

exit(1);

}

HuffmanCode HuffmanCoding(HuffmanTree HT,HuffmanCode HC,unsigned int *w,unsigned int n)

{

unsigned int i,s1=0,s2=0;

HuffmanTree p;

char *cd;

unsigned int f,c,start,m;

MinCode min;

if(n<=1) Error("Code too small!");

m=2*n-1;

HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));

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

{

p->weight=*w;

p->parent=0;

p->lchild=0;

p->rchild=0;

}

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

{

p->weight=0;

p->parent=0;

p->lchild=0;

p->rchild=0;

}

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

{

min=Select(HT,i-1);

s1=min.s1;

s2=min.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;

}

printf("HT List:\n");

printf("Number\t\tweight\t\tparent\t\tlchild\t\trchild\n");

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

printf("%d\t\t%d\t\t%d\t\t%d\t\t%d\n",

i,HT[i].weight,HT[i].parent,HT[i].lchild,HT[i].rchild);

HC=(HuffmanCode)malloc((n+1)*sizeof(char *));

cd=(char *)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]='0';

else cd[--start]='1';

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

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

}

free(cd);

return HC;

}

MinCode Select(HuffmanTree HT,unsigned int n)

{

unsigned int min,secmin;

unsigned int temp;

unsigned int i,s1,s2,tempi;

MinCode code;

s1=1;s2=1;

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

if(HT[i].parent==0)

{

min=HT[i].weight;

s1=i;

break;

}

tempi=i++;

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

if(HT[i].weight

{

min=HT[i].weight;

s1=i;

}

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

if(HT[i].parent==0&&i!=s1)

{

secmin=HT[i].weight;

s2=i;

break;

}

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

if(HT[i].weight

{

secmin=HT[i].weight;

s2=i;

}

if(s1>s2)

{

temp=s1;

s1=s2;

s2=temp;

}

code.s1=s1;

code.s2=s2;

return code;

}

void main()

{

HuffmanTree HT=NULL;

HuffmanCode HC=NULL;

unsigned int *w=NULL;

unsigned int i,n;

printf("Input n:\n");

scanf("%d",&n);

w=(unsigned int *)malloc((n+1)*sizeof(unsigned int *));

w[0]=0;

printf("Enter weight:\n");

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

{

printf("w[%d]=",i);

scanf("%d",&w[i]);

}

HC=HuffmanCoding(HT,HC,w,n);

printf("HuffmanCode:\n");

printf("Number\t\tWeight\t\tCode\n");

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

printf("%d\t\t%d\t\t%s\n",i,w[i],HC[i]);

}

00分享举报

c语言编码rna翻译,哪位大牛有哈夫曼编码的C语言源程序,麻烦帮帮忙啦!相关推荐

  1. 哈夫曼编译器c语言程序,哪位大牛有哈夫曼编码的C语言源程序,麻烦帮帮忙啦!...

    匿名用户 1级 2014-11-15 回答 这是我当时做的作业题,就是数据结构书上的那道题.不知道是否和你说的是同样一道题,代码如下: /* HuffmanCodeBYTurboC2.0 Filena ...

  2. 哈夫曼编码译码 C语言,【求助】严蔚敏版数据结构 哈夫曼编码译码

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include typedef char* HuffmanCode;/*动态分配数组,存储哈夫曼编码*/ typed ...

  3. python哈夫曼编码注意_Python 算法(2) 哈夫曼编码 Huffman Encoding

    这个问题原始是用来实现一个可变长度的编码问题,但可以总结成这样一个问题,假设我们有很多的叶子节点,每个节点都有一个权值w(可以是任何有意义的数值,比如它出现的概率),我们要用这些叶子节点构造一棵树,那 ...

  4. 哈夫曼编码c语言论文,哈夫曼编码的实现及应用论文.doc

    哈夫曼编码的实现及应用论文 毕 业 设 计(论文) 题目 哈夫曼编码的实现 及应用 二级学院 数学与统计学院 专 业 信息与计算科学 班 级 学生姓名 张泽欣 学号 指导教师 职称 时 间 目录 摘要 ...

  5. 南邮哈夫曼编码c语言代码_漫画:“哈夫曼编码” 是什么鬼?

    ​在上一期,我们介绍了一种特殊的数据结构 "哈夫曼树",也被称为最优二叉树.没看过的小伙伴可以点击下方链接: 漫画:什么是 "哈夫曼树" ? 那么,这种数据结构 ...

  6. 贪心算法哈夫曼编码c语言,贪心算法详解:哈夫曼编码

    理解贪心算法 贪心算法是一种算法思想,并不是一个具体的算法,因此我们用两个例子来理解什么样的问题适合用贪心算法解决. 例一 现在有一个能装 100g 物品的背包,和一些可拆分的物品(见表格),怎么装才 ...

  7. 信息论霍夫曼编码c语言,Huffman 信息论与编码 - 下载 - 搜珍网

    霍夫曼编码/Shiyan4/Shiyan.sln 霍夫曼编码/Shiyan4/Shiyan.suo 霍夫曼编码/Shiyan4/Shiyan.v11.suo 霍夫曼编码/Shiyan4/Shiyan4 ...

  8. 霍夫曼树和霍夫曼编码以及霍夫曼编码的应用

    文章目录 霍夫曼树介绍 1.1霍夫曼树的定义 1.2霍夫曼树的几个概念 1.3构建霍夫曼树的过程 1.4代码实现霍夫曼树 霍夫曼编码介绍 什么是霍夫曼编码 通信领域的应用 字符串压缩 1.构造霍夫曼树 ...

  9. 哈夫曼java_哈夫曼树和哈夫曼编码介绍以及Java实现案例

    1.哈夫曼树 1.1哈夫曼树简介 哈夫曼树:给定N个权值作为N个叶子节点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree).哈夫曼树 ...

最新文章

  1. (六)java多线程之ReadWriteLock
  2. .offset().top是什么意思?
  3. 爬虫python下载-python 下载 爬虫
  4. 图卷积网络是什么?(行为识别)
  5. js进阶 9-11 select选项框如何动态添加和删除元素
  6. linux下离线安装gcc
  7. 防删库实用指南 | 只需一步,快速召回被误删的表
  8. 使用Web API和React创建用户注册和登录
  9. Javascript的一个生产PDF的库: unicode和中文问题的解决
  10. Spring Boot和Dubbo整合
  11. 批量导出Excel图表为图片
  12. 简易散列表实现电话号码查询系统
  13. MySQL 数据库备份与还原
  14. 今日睡眠质量记录70分
  15. 金士顿内存条真假测试软件,金士顿内存条真伪怎么看?金士顿内存条判别真伪的几种方法...
  16. 实施质量保证和控制质量的区别
  17. matlab模糊优选理论模型,模糊优选神经网络BP模型
  18. 把字符串转换大写php,php把字符串转换为大写的函数strtoupper()
  19. 转:Processing 编程学习指南
  20. 小学语文三年级阅读理解专项练习附答案~寻隐者不遇

热门文章

  1. html大风效果,使用jquery.windy制作风吹卡片的效果 | jQuery教程
  2. Ubuntu16.04下,遇到Unmet dependencies. Try 'apt-get -f install' with no packages的解决办法
  3. UIKit Dynamics入门
  4. GDI+ 制作透明图片
  5. 卷积、线性时不变系统、因果系统
  6. 计算机考试显示延时一分钟,电脑显示延迟解决方法教程
  7. 使用sunshine+moonlight 实现电脑串流到电视(Android 设备)低延迟投屏
  8. matlab 心形曲线
  9. 纯前端JS导出Word包含图片
  10. osi模型:七层模型介绍_什么是OSI(开放系统互连)模型?