哈夫曼编码 c++,输入字符和出现的概率,求输入的数据的Huffman树路径?要求代码!,急
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/09 00:15:19
哈夫曼编码 c++,输入字符和出现的概率,求输入的数据的Huffman树路径?要求代码!,急
哈夫曼编码 c++,输入字符和出现的概率,求输入的数据的Huffman树路径?要求代码!,急
哈夫曼编码 c++,输入字符和出现的概率,求输入的数据的Huffman树路径?要求代码!,急
这是我们大三做的一个上机题:
上机题:设电文字符集D及各字符出现的概率F如下:
D={a,b,c,d,e,f,g,h}(字符数n=8)
F={5,29,7,8,14,23,3,11}(%)
编写完成下列功能的程序:
①构造关于F的Huffman树;
②求出并打印D总各字符的Huffman编码.
程序结构:类型说明;
构造Huffman树的函数:Huffman_tree(H[m+1]);
求Huffman编码的函数:Huffman_code(code[n+1]);
main()
{ 变量说明;
输入字符集D及频率F;
调用Huffman_tree(H);
调用Huffman_code(code);
打印编码;Y继续,N退出}
运行后,输入8个字符(中间不能有空格,否则将空格视为字符处理),然后输入概率(整数,空格或回车分隔.如果要支持浮点数,要改程序)然后Enter,出现构造的霍夫曼节点和编码,程序如下
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define N 8
#define M 2*N-1
#define MAX 32767
typedef char datatype;
typedef struct
{
int wi;
char data;
int Parent,Lchild,Rchild;
}huffm;
typedef struct
{
char bits[N+1];
int start;
char ch;
}ctype;
void Huffman_tree(huffm H[M+1])
{
int i,j,p1,p2;
int w,s1,s2;
for(i=1;i