繁体   English   中英

从函数返回指针并使用指针递归调用函数-BST

[英]Returning pointer from function and calling function with pointer recursively - BST

最近,我开始编写BST实现,但我仍在努力使用指针。 我的第一个问题是,我尝试使用函数查找给定节点的“前任”,该给定节点的给定指针作为参数返回指向给定节点的前任的指针。 我试图通过调用函数和给出参数来进行逻辑思考,但是我陷入了困境。

首先,我在'main'中声明了'root'节点,如下所示: tree *root; ,然后调用一个函数,从中调用函数findPredecessor像这样: del(&root, k1); ,这是一个del函数的声明: void del(tree **root, int k)然后我使用'iterator'来遍历整个BST树,声明如下: tree *w = NULL 最后,这是我如何调用findPredecessor函数(在del函数内部): tree *predecessor = findPredecessor(w); 我得到一个错误C2040 'FindPredecessor': 'tree *(tree *)' differs in levels of indirection from 'int ()' ,这是findPredecessor函数的主体:

tree* findPredecessor(tree *w) {
w = w->left;
while (w->right != NULL) {
    w = w->right;
}
return w;}

我也在努力从整棵树中分配内存,这是一个函数delAll的主体:

void delAll(tree **root) {
    if (*root == NULL) {
        return;
    }
    delAll(&((*root)->left));
    delAll(&((*root)->right));
    free(*root);
}

,我从'main'调用的方式与del 我知道我的问题是与某种参考/指针相关的,感谢您的帮助。 对不起我的英语不好。

我认为您在声明它之前正在调用findPredecessor()。 只需添加一个前向声明。 或者,您可以重新排列代码,以便在del()之前实现findPredecessor()。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM