蜚语. 2022-12-14 20:36 采纳率: 92.3%
浏览 7
已结题

关于#c++#的问题:我的解答思路和尝试过的方法,回答率下降 60%

#include<iostream>
#include<malloc.h>
using namespace std;

struct BSTree {
    int data;
    BSTree* left;
    BSTree* right;
};

void insert_Node(BSTree*& root, int n) {
    if (root == NULL) {
        root = new BSTree();
        root->data = n;
        root->left = NULL;
        root->right = NULL;
    }
    else {
        if (n <= root->data) {
            insert_Node(root->left, n);
        }
        else {
            insert_Node(root->right, n);
        }
    }
}

void preOder(BSTree* root) {
    if (root == NULL) {
        return;
    }
    else {
        cout << root->data << " ";
        preOder(root->left);
        preOder(root->right);
    }
}

int main() {
    BSTree* root = NULL;
    int n;
    cin >> n;
    while (n != 0) {
        insert_Node(root, n);
        cin >> n;
    }
    preOder(root);
    return 0;
}


运行结果及详细报错内容

代码没有问题,我就是不理解那一句void insert_Node(BSTree*& root, int n)
里面*&这个用法,有没有同学指导下

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

他那个已经是指针,为啥还要取地址符号

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-12-14 21:02
    关注
    
    void insert_Node(BSTree*& root, int n)
    

    这种写法一般是因为在函数内会修改root指针地址的原因,所以用指针的引用类型
    因为如果只是指针参数的话,函数内只能修改指针指向的内存空间数据,实现外部传递指针变量指向的内存空间数据修改。而无法实现修改外部传递指针变量地址的修改。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月22日
  • 已采纳回答 12月14日
  • 创建了问题 12月14日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。