早教吧 育儿知识 作业答案 考试题库 百科 知识分享

霍夫曼编码 c语言程序 求能运行的能算出结果的已知信源:s1=0.20,s2=0.18,s3=0.17,s4=0.15,s5=0.15,s6=0.05,s7=0.05,s8=0.05,给出其中一个霍夫曼码,并求其平均码长和编码效率.

题目详情
霍夫曼编码 c语言程序 求能运行的能算出结果的
已知信源:s1=0.20,s2=0.18,s3=0.17,s4=0.15,s5=0.15,s6=0.05,s7=0.05,s8=0.05,给出其中一个霍夫曼码,并求其平均码长和编码效率.
▼优质解答
答案和解析
#include "stdio.h"
#include "stdlib.h"
#include
#include
#define n 8
#define m 2*n-1
typedef struct
{
float weight;
int lchild,rchild,parent;
}HTNode;
typedef HTNode HuffmanTree[m];
void InitHuffmanTree(HuffmanTree T)
{
for(int i = 0;i < m;i++)
{
T[i].lchild = T[i].rchild = T[i].parent = -1;
T[i].weight = 0.0;
}
}
void InputWeight(HuffmanTree T)
{
float temp[n] = {0.20,0.18,0.17,0.15,0.15,0.05,0.05,0.05};
for(int i = 0;i < n;i++)
T[i].weight = temp[i];
}
void SelectMin(HuffmanTree T,int i,int *p1,int *p2)
{
int j;
*p1 = *p2 = m-1;
T[m-1].weight = FLT_MAX;
for(j = 0;j = 0;j--)
printf("%d",arr[j]);
printf("\n");
return count;
}
int main()
{
HuffmanTree T;
CreateHuffmanTree(T);
float ave = 0;
for(int i = 0;i < n;i++)
ave += T[i].weight*PrintHuffmanCode(T,i);
printf("平均码长:\t%f\n",ave);
printf("编码效率:\t%f%%\n",ave/ceil(log((double)n)/log((double)2))*100);
system("pause");
}
看了 霍夫曼编码 c语言程序 求能...的网友还看了以下:

一个高中物理电学题目求解答最好有详细分析过程、一盏电灯直接接在电压恒定的电源上,其功率为100瓦,  2020-04-06 …

设系统中仅有一个资源类,其中共有3个资源实例.设系统中仅有一个资源类,其中共有3个资源实例,使用此  2020-06-16 …

一个线圈接到220伏的直流电源上,其功率为1.21千瓦,接到50赫兹,220伏的交流电源上时,其功  2020-06-25 …

图为种群数量增长曲线,有关叙述错误的是()A.改善空间和资源条件有望使K值提高B.bc段种群增长速率  2020-11-11 …

如图为种群数量增长曲线,有关叙述不正确的是()A.改善空间和资源条件有望使K值提高B.BC段种群增长  2020-12-09 …

如图为种群数量增长曲线,有关叙述不正确的是A.BC段种群增长率逐渐下降,出生率小于死亡率B.改善空间  2020-12-09 …

有一蒸汽机,在一个过程中若其从高温热源吸收了250J热量,向低温热源放出180J的热量,则蒸汽机循环  2020-12-18 …

Flo-EFD(嵌入Pro/E版)设置离散型阵列热源时,其热功率如何设置?比如数量为10个小块的阵列  2020-12-18 …

如图为某种群数量增长曲线,有关叙述不正确的是()A.改善空间和资源条件有望使K值提高B.BC段种群增  2020-12-31 …

电动势E越大,电源提供的电功率越大,这表示电源把其它形式的能转化为电能的本领越大.“电源把其它形式的  2021-01-15 …