0
所以我正在研究二叉搜索樹功能。爲什麼我必須在節點指針前添加一個&符號?我認爲它已經是一個指針,它已經指向一個位置。我明白,如果我添加一個節點,那麼我需要確保父節點指向新節點,否則父節點仍將指向NULL。但是,如果我將節點指針作爲節點* &傳遞給我,爲什麼我不這樣做呢?二叉搜索樹。指針作爲參考參數
bool bst::remove123(int data, node*& x)
{
if (x == NULL)
{
return false;
}
else if (x->getData() < data)
{
return remove123(data, x->right);
}
else if (x->getData() > data)
{
return remove123(data, x->left);
}
else
{
node* old = x;
if (x->left == NULL)
{
x = x->right;
}
else if (x->right == NULL)
{
x = x->left;
}
else
{
replacement(old, x->left);
}
delete old;
return true;
}
}
謝謝
'&'不是這裏的運算符地址,它是一個引用聲明。你需要回頭重讀C++書中指針和引用的解釋。參數需要作爲參考的原因是,當節點被刪除時,被刪除節點的原始指針需要被替換,在這個遞歸上下文中,最簡單的方法是使用一個引用。有關引用的更多信息,請參閱C++書籍。 –
當你需要修改'T *'類型的指針時,你傳入了一個指針類型'T *&'的引用。指針類型的引用就像對其他類型的引用一樣。 – 2017-02-22 02:04:33