数据结构《哈夫曼树》课程设计

#include
#include
#define N 50    //叶子结点数
#define M 2*N-1 //树中结点总数
#include
using namespace std;
typedef struct
{
   char data[5];//结点值
   int weight;  //权重
   int parent;  //双亲结点
   int lchild;  //左孩子结点
   int rchild;  //右孩子节点
}HTNode;
typedef struct
{
	char cd[N]; //存放哈夫曼编码
	int start;  //ch[start..n]存放哈夫曼编码
}HCode;
void CreateHT(HTNode ht[],int n)   //由ht的叶子结点构造完整的哈夫曼编码
{
   int i,k,lnode,rnode;
   int min1,min2;                                //所有节点的相关域置初值-1
   for(i=0;i<2*n-1;i++)
	   ht[i].parent=ht[i].lchild=ht[i].rchild=-1;
   for(i=n;i<2*n-1;i++)                          //构造哈夫曼树的分支结点
   {
     min1=min2=32767;                            //lnode和rnode为最小权重的两个结点位置          
	 lnode=rnode=-1;    
	 for(k=0;k<=i-1;k++)                         //查找最小和次小的结点
		 if(ht[k].parent==-1)                    //只在尚未构造二叉树的结点中查找
		 {if(ht[k].weight

你可能感兴趣的:(数据结构)