Я читаю книгу о бинарном дереве поиска и что-то странное пришло в голову.
class BST
{
public:
void insert(const Comparable & item)
private:
BinaryNode *root;
struct BinaryNode
{
Comparable element;
BinaryNode *left;
BinaryNode *right;
BinaryNode(const Comparable & theElement, BinaryNode *lt, BinaryNode *rt) :
element(theElement), left(lt), right(rt) {}
}
void insert(const Comparable & item, BinaryNode * & t) const;
};
private
insert
функция является вспомогательной функцией для public
insert
функция и private
insert
Функция ищет правильное место для вставки с использованием рекурсии.
Часть, которую я не понимаю, это BinaryNode * & t
в параметре. Что это значит?
Указатель адреса t
?
В вашем выражении BinaryNode * & t)
BinaryNode* & t
------------- -----
BinaryNode pointer t is reference variable
так t
ссылка на указатель BinaryNode учебный класс.
Указатель адреса т?
Ты смущен ampersand &
оператор в с ++. которые дают адрес переменной. но синтаксис другой.
ampersand &
перед некоторыми из переменных, как показано ниже:
BinaryNode b;
BinaryNode* ptr = &b;
Но следующий путь для ссылочной переменной (просто не указатель):
BinaryNode b;
BinaryNode & t = b;
и ваш, как показано ниже:
BinaryNode b;
BinaryNode* ptr = &b;
BinaryNode* &t = ptr;
Это ссылка на указатель, вы можете изменить указатель в этой функции, и он будет изменен снаружи.
Простой пример http://liveworkspace.org/code/1EfD0Q$ 8