如何修改对结构成员变量的指针引用?

我想用C++创建BST。当我尝试将指针分配给新节点时,它没有改变。在函数调用后,它仍然是随机值。是否可以用我的方法来做?

struct wezel {
  int value;
  wezel *l_val;
  wezel *r_val;

  wezel(int aValue) {
    value = aValue;
    l_val = NULL;
    r_val = NULL;
  }
};

struct tree {
   wezel *root;

   tree(wezel *aNode) {
     root = aNode;
   }
};

void addNode(int aValue, wezel aNode) {
   if(aValue < aNode.value) {
      if(aNode.l_val == NULL) {
            wezel pt = wezel(aValue);
            wezel *point = &pt;
        aNode.l_val = point; //do not work
      } else {
        return addNode(aValue, *aNode.l_val);
      }
   } else if(aValue > aNode.value) {
      if(aNode.r_val == NULL) {
            wezel pt = wezel(aValue);
            wezel *point = &pt;
        aNode.r_val = point; //do not work
      } else {
        return addNode(aValue, *aNode.r_val);
      }
   }

};

解决方案:

wezel pt = wezel(aValue);
wezel *point = &pt;
aNode.l_val = point;

这里你创建了一个wezel类型的pt对象,一旦它离开作用域就会被销毁,而指针’point’和aNode.l_val仍然指向它的地址。顺便说一下’point’也会在离开作用域后被销毁)。

相反,你应该创建一个新的对象,像这样链接到 aNode.l_val。

aNode.l_val = new wezel(aValue);

不要忘了用各自的 “delete “语句正确处理你的节点。

给TA打赏
共{{data.count}}人
人已打赏
未分类

在:伪元素后的负z-index破坏了CSS:hover过渡动画。

2022-9-24 0:55:19

未分类

我可以根据矩阵单元格的值进行编辑吗?

2022-9-24 0:55:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索