问题及代码
问题描述: 运行并重复测试教学内容中涉及的算法。改变测试数据进行重复测试的意义在于,可以从更多角度体会算法,以达到逐渐掌握算法的程度。使用你的测试数据,并展示测试结果,观察运行结果,以此来领会算法。
输入描述: 若干测试数据。
程序输出: 对应数据的输出。
#include <stdio.h>
#include <string.h>
#define N 50 //叶子结点数
#define M 2*N-1 //树中结点总数
//哈夫曼树的节点结构类型
typedef struct
{
char data; //结点值
double weight; //权重
int parent; //双亲结点
int lchild; //左孩子结点
int rchild; //右孩子结点
} HTNode;
//每个节点哈夫曼编码的结构类型
typedef struct
{
char cd[N]; //存放哈夫曼码
int start;
} HCode;
//构造哈夫曼树
void CreateHT(HTNode ht[],int n)
{
int i,k,lnode,rnode;
double min1,min2;
for (i=0; i<2*n-1; i++) //所有结点的相关域置初值-1
ht[i].parent=ht[i].lchild=ht[i].rchild=-1;
for (i=n; i<2*n-1; i++) //构造哈夫曼树
{