struct leaf
{
int data;
leaf *l;
leaf *r;
};
struct leaf *p;
void tree::findparent(int n,int &found,leaf *&parent)
Run Code Online (Sandbox Code Playgroud)
这是BST的一段代码.我想问一下.为什么
leaf *&parent
Run Code Online (Sandbox Code Playgroud)
为什么我们需要"参考标记"?
父母也是一片叶子,为什么我不能用leaf* parent呢?
以下代码供您参考.谢谢!
void tree::findparent(int n,int &found,leaf *&parent)
{
leaf *q;
found=NO;
parent=NULL;
if(p==NULL)
return;
q=p;
while(q!=NULL)
{
if(q->data==n)
{
found=YES;
return;
}
if(q->data>n)
{
parent=q;
q=q->l;
}
else
{
parent=q;
q=q->r;
}
}
}
Run Code Online (Sandbox Code Playgroud)
要传递指针parent的引用,这样就可以修改指针:
parent=q;
Run Code Online (Sandbox Code Playgroud)
如果您通过值传递指针,则修改将是指向函数末尾过期的指针的副本.