我想将指针值返回到我的main函数,但它只在本地工作,root = NULL的值在函数插入之外保持不变。
node *insert(int number, node *root ){
if(root==NULL){
root = new node;
root->key = number;
printf("%d", number);
return root;
} }
答案 0 :(得分:0)
参数变量实际上是堆栈变量,由函数的调用者初始化。
当您指定" root = new node;"你是去当地的" root"
如何从main()调用insert()? 你可以:
node* newRoot = insert(x, oldRoot);
比"新节点"将被分配给newRoot。你甚至可以:
oldRoot= insert(x, oldRoot);
比"新节点"将被分配给oldRoot
但是你稍后会在删除所有这些内容时遇到麻烦...
答案 1 :(得分:0)
请注意,root
正在返回,因此在main()
中您应该这样称呼它:
node *root = insert(4711, nullptr);
我使用nullptr
,因为这显然是C ++,我相信今天它应该如何拼写。