鱼C论坛

 找回密码
 立即注册
查看: 1698|回复: 12

[已解决]哈夫曼树的构造问题

[复制链接]
发表于 2023-12-9 22:51:47 | 显示全部楼层
[b]在C语言中没有引用参数, `'&'` 是获取变量的地址, 并非引用. C++ 才有引用.

保持函数 `void createHFTree(HFTree& HT, char value[], int fr[], int n)` 在语法结构上不变,只能在C++环境下运行。

但在你的代码中看起来你希望传递一个`HFTree`的数组。

在C++中,你应该这样声明你的函数:`void createHFTree(HFTree HT[], char value[], int fr[], int n)`.

这样函数就能正确的接收一个 `HFTree`数组了。

然后在‘main’函数中,你可以直接传递 `HT` :

`createHFTree(HT, characters, weights, n);`   

对于你的代码,需要做如下更改:

对于 `createHFTree` 的定义改为 `void createHFTree(HFTree HT[], char value[], int fr[], int n)`

调用 `createHFTree` 改为 `createHFTree(HT, characters, weights, n);`

注意: `&HT[lnode]` 和 `&HT[rnode]` 都会产生`HFTree*`类型的结果,所以你的lchild, rchild, parent成员变量应更新为`HFTree*` 类型。

而且, 在 C++ 中一般建议使用 `new/delete` 来分配和释放内存,而不是 `malloc/free` 。所以,建议你使用 `new` 来创建 `HT`,并在最后使用 `delete []` 来释放内存。
求最佳答案
[/b]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-28 02:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表