1
void extract_left_subtree(node *right_child)
{
    while(right_child->right)
    {
        right_child = right_child->right;
    }  
    printf("rightmost inside the funtion is %d\n",right_child->data);
}

在此函数中,最后一行正在打印正确的值。

 node *right_child=root;
 extract_left_subtree(right_child);
 printf("rightmost child is %d\n",right_child->data);

但在这里我得到了一些垃圾价值。

我知道问题是什么,我知道为什么会这样,我唯一不知道的是如何纠正这个问题? C# 中有像 ref 和 out 这样的关键字可以用来实现相同的功能,但问题是,我们如何在 C 语言中做同样的事情?

我不想从方法中返回值

4

1 回答 1

4

我不想从方法中返回值

如果你不想返回一个值,你可以这样做:

void extract_left_subtree(node **right_child)
{
    while((*right_child)->right)
    {
        (*right_child) = (*right_child)->right;
    }  
    printf("rightmost inside the funtion is %d\n", (*right_child)->data);
}

并称之为:

extract_left_subtree(&right_child);

这会将地址传递right_child给函数,然后函数可以直接更新right_child

于 2020-01-05T07:44:51.470 回答