#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Tree
{
int wight;
int left;
int right;
int flag;
int parent;
}HaffTree;
void CreatHaffTree(HaffTree *p,int n,int *wight)
{
int i,j; //循环变量
int min1,min2; //最小值和次小值
int x1,x2; //最小值和次小值的下标
//初始化 HaffTree
for (i = 0; i < 2 * n -1; i++)
{
if (i < n)
p[i].wight = wight[i];
else
p[i].wight = 0;
p[i].parent = 0;
p[i].left = p[i].right = 0;
p[i].flag = 0;
}
//创建HaffTree
for (i = 0; i < n -1;i++)
{
min1 = min2 = INT_MAX;
x1 = x2 = 0;
for (j = 0; j < n + i; j++)
{
if (p[j].wight < min1 && p[j].flag == 0)
{
min2 = min1;
x2 = x1;
min1 = p[j].wight;
x1 = j;
}
else if (p[j].wight < min2 && p[j].flag ==0)
{
min2 = p[j].wight;
x2 = j;
}
用三重指针实现HaffTree
最新推荐文章于 2023-03-09 20:40:41 发布
这篇博客介绍如何利用三重指针来构建HaffTree数据结构,并通过示例代码展示了创建和设置HaffTree的过程。主要内容包括初始化HaffTree节点、创建HaffTree以及为每个节点分配编码。
摘要由CSDN通过智能技术生成