/*
8609 哈夫曼树
时间限制:1000MS 内存限制:1000K
提交次数:60 通过次数:12
题型: 编程题 语言: 无限制
Description
利用静态链表建立赫夫曼树,建树过程中要求左子树权值小于右子树权值,求各结点的编码。要求:叶子结点的个数n及结点值由键盘录入。本题给出程序代码,要求修改以满足测试要求.
*/
#include "stdio.h"
#include "malloc.h"
#include "string.h"
typedef struct{
int weight;
int parent,lchild,rchild;
}HTNode,*HuffmanTree;
typedef char ** HuffmanCode;
void Select(HuffmanTree &HT, int n, int &s1, int &s2)
//在HT[1..n]中选择parent为0且weight最小的两个结点,
// 其序号分别为s1和s2。
{
int i,temp;
s1=-1;s2=-1;//s1最小,s2第二小
for (i=1;i<=n;i++)
{
if (HT[i].parent==0)
{
if (s1==-1)
s1=i;
else if(s2==-1)
s2=i;
if(HT[s1].weight>HT[i].weight)
{
s2=s1;
s1=i;
}
if(HT[s2].weight>HT[i].weight&&s1!=i)
{
8069---哈夫曼树--模板
最新推荐文章于 2023-02-15 06:35:39 发布