я пытался реализовать BST с помощью C++, поэтому я попытался это:Передача указателя на функцию
#include <iostream>
#include <stdlib.h>
struct node
{
int value;
node* left;
node* right;
};
void insert(node *cur , int val)
{
if(!cur)
{
cur = new node;
cur->value = val;
cur->left = NULL;
cur->right = NULL;
return;
}
if(val <= cur->value)
insert(cur->left , val);
else
insert(cur->right , val);
}
using namespace std;
int main()
{
node *root = NULL;
insert(root , 20);
insert(root , 21);
cout<<(*root).value;
return 0;
}
, но у меня есть проблема, моя insert()
функция работает хорошо, но не кажется, изменение cur
для отражения в указателе root
, так как root
остается NULL
после вызовов функции функции insert(). Что здесь не так?
EDIT: Спасибо за все ваши ответы, сделав указатель на указатель, кажется, будет уродливым и утомительным, есть ли какой-либо другой способ, с помощью чего-то другого?
Почему C тег тогда? –
параметры передаются по значению (функция получает копию значения параметра). Таким образом, 'cur' является локальной копией вызывающего параметра, поэтому' cur = whatever' изменяет локальный параметр. Вам нужно передать его по ссылке i.e. 'node * & cur' – bolov