霍夫曼编码 c语言程序 求能运行的能算出结果的
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/07/16 08:19:50
霍夫曼编码 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,给出其中一个霍夫曼码,并求其平均码长和编码效率.
已知信源: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");
}
再问: 拜托给个通用的好吧?就是数据在运行的时候输入出结果的那种
再答: #include "stdio.h" #include "stdlib.h" #include #include #define MAX 1000 int n,m; typedef struct { float weight; int lchild,rchild,parent; }HTNode; typedef HTNode HuffmanTree[MAX]; void InitHuffmanTree(HuffmanTree T) { for(int i = 0;i < MAX;i++) { T[i].lchild = T[i].rchild = T[i].parent = -1; T[i].weight = 0.0; } } void InputWeight(HuffmanTree T) { printf("请输入n:\n"); scanf("%d",&n); m = 2*n-1; printf("请输入数据:\n"); for(int i = 0;i < n;i++) scanf("%f",&T[i].weight); } 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"); } 输入格式如下图 http://hiphotos.baidu.com/timetraces/pic/item/1d9c13e023d230a62e2e212f.jpg 修改很简单的,LZ也稍微勤快点呢......
#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");
}
再问: 拜托给个通用的好吧?就是数据在运行的时候输入出结果的那种
再答: #include "stdio.h" #include "stdlib.h" #include #include #define MAX 1000 int n,m; typedef struct { float weight; int lchild,rchild,parent; }HTNode; typedef HTNode HuffmanTree[MAX]; void InitHuffmanTree(HuffmanTree T) { for(int i = 0;i < MAX;i++) { T[i].lchild = T[i].rchild = T[i].parent = -1; T[i].weight = 0.0; } } void InputWeight(HuffmanTree T) { printf("请输入n:\n"); scanf("%d",&n); m = 2*n-1; printf("请输入数据:\n"); for(int i = 0;i < n;i++) scanf("%f",&T[i].weight); } 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"); } 输入格式如下图 http://hiphotos.baidu.com/timetraces/pic/item/1d9c13e023d230a62e2e212f.jpg 修改很简单的,LZ也稍微勤快点呢......
霍夫曼编码 c语言程序 求能运行的能算出结果的
求用C语言编写的能运行计算四则运算结果的程序,要求输入算式按回车得出结果
C语言题 求运行结果 下列程序段执行后的输出结果是( )
运行下面的C语言程序,根据运行结果,可以说明什么?
C语言,阅读下列程序,则在执行后,程序的运行结果为 ?
用C语言编写一段程序,求两个集合的笛卡尔乘积.并对运行结果截图.
C语言用do while循环求1到200的奇数个数?要程序能运行的!
请问如何用C语言实现汉字和Unicode编码的转换 求程序
c语言 为什么运行没结果..求大神指导..怎么修改,编写程序拆分输入实数的整数部分与小数部分..
要求:是一个能正常运行的程序 c语言 有一个不多于5的正整数,求它的位数,同时求出它的每位数字?
C语言中求pi值,语句顺序不同,结果不同,哪位大虾能给我解释下程序是怎么个运行过程
c 语言这两题的运行结果等于零1是什么原因呢