qq_45787387 2020-02-27 18:40 采纳率: 0%
浏览 253

求大神帮忙解决一下问题

typedef char** HuffManCode;//存放编吗的类型,所以是二维数组
typedef struct Node
{
    int weight;
    int parent, lchild, rchild;
}HTNode,*HuffManTree;
void Select();
//哈夫曼编吗,第一个表示传入一个指针指向哈夫曼树,第二个表示返回的编吗数组,第三个表示权重,第四个表示数量
void HuffManCoding(HuffManTree *HT, HuffManCode *HC, int *w, int n)
{
    int m, i, s1, s2, start,c,f;
    HuffManTree p;
    char* code;
    if (n <= 1)
        return;
    m = 2 * n - 1;//m表示树的结点树
    *HT = (HuffManTree)malloc(sizeof(HTNode)*(m + 1));//创建一个有m个空间的数组
    for (p = *HT + 1, i = 1; i <= n; i++, p++, w++)//让指针指向数组第二个位置,不使用下标为0的位置
    {
        p->weight= *w;
        p->lchild = 0;
        p->rchild = 0;
        p->parent = 0;
        //对前n个位置进行初始化
    }
    for (; i <= m; p++, i++)
    {
        p->parent = 0;
        //对后面n -1个结点的父结点初始化
    }
    for (i = n + 1; i <= m; i++)//构造哈夫曼树
    {
        Select(HT, i - 1, &s1, &s2);//用于选出2个小的结点下标
        (*HT)[s1].parent = (*HT)[s2].parent = i;//将找出的2个结点的父结点指向i位置
        (*HT)[i].lchild = s1;//s1比s2小,更小的在左边
        (*HT)[i].rchild = s2;
        (*HT)[i].weight = (*HT)[s1].weight + (*HT)[s2].weight;
    }

在上面代码中,为什么我把(*HT)[i].lchild换为HT[i]->lchild就会报错,求大神详细说一下

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 腾讯企业邮箱邮件可以恢复么
    • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
    • ¥15 错误 LNK2001 无法解析的外部符号
    • ¥50 安装pyaudiokits失败
    • ¥15 计组这些题应该咋做呀
    • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
    • ¥15 让node服务器有自动加载文件的功能
    • ¥15 jmeter脚本回放有的是对的有的是错的
    • ¥15 r语言蛋白组学相关问题
    • ¥15 Python时间序列如何拟合疏系数模型