【问题标题】:A quesition about C's pointer关于C指针的问题
【发布时间】:2023-01-08 17:17:52
【问题描述】:

最近在学习数据结构和算法。当我在我的根 BinaryTreeNode 的 leftChild 中添加一个 leftChild 时,比如说,Root Node 是 a,a 的 leftChild 是 b,b 的 left Child 是 d。但是当我创建节点d时,令我惊讶的是数据为b的节点也被更改为d。 我知道这是 C 的指针引起的问题,但我不知道如何解决。 这是我的代码。

这就是我定义 BinNode 和 BinTree 结构的方式

这些是用于生成节点和添加子节点的函数。

这是我的主要功能

添加根节点的第一个子节点后,根节点就是这个样子。

添加根节点的第二个子节点后,根节点看起来是这样的。

能否请您帮我找出出现此问题的原因以及解决方法?

【问题讨论】:

  • 不要使用链接。在问题中键入所有必需的代码。

标签: c pointers binary-tree


【解决方案1】:

您的 generateNode 函数在函数范围内创建一个本地 BinNode 并返回指向它的指针。问题是当函数结束时,这块内存被释放,因此指针指向未分配的内存,导致未定义的行为。相反,您应该使用 malloc 分配此内存,然后在不再需要时显式 free 它。

【讨论】:

    猜你喜欢
    • 2014-05-13
    • 1970-01-01
    • 2011-02-01
    • 2022-01-05
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    相关资源
    最近更新 更多