繁体   English   中英

C实现二进制搜索树

[英]C Implementing a Binary Search Tree

我一直在尝试在C中实现bst。我想我已经快到了,但是在我的添加节点函数中,我创建了一个名为current的临时节点,用于存储在树中访问的当前节点。 然后,当我修改当前节点时,函数完成后不会修改我的原始指针。

我已经阅读了有关此内容的内容,并且我认为可能需要一个指针,但是我仍然不太了解如何更新原始结构。

没错,问题与指向bstlist_add的指针bstlist_add 这是一个示例,可以帮助您弄清楚需要在代码中进行哪些更改。

int a=10;
int b=20;

void noChange(int * pSomeInt);
void change(int ** ppSomeInt);

int main(int argc,char * argv[])
{
    int * pMainInt=&a;

    noChange(pMainInt);
    //pMainInt will still point to a

    //since the parameter to change is int **, we have to use & here
    change(&pMainInt);
    //pMainInt now points to b

    return 0;
}

void noChange(int * pSomeInt)
{
    //while pSomeInt is a pointer, it is a copy of pMainInt, not a pointer to it 
    //so this creates a pointer to the parameter, pSomeInt, itself
    int ** ppSomeInt=&pSomeInt;

    //so this changes the parameter, pSomeInt
    *ppSomeInt=&b;
}

void change(int ** ppSomeInt)
{
    //ppSomeInt is a pointer to pMainInt, which is itself an int *
    //so *ppSomeInt is pMainInt and not a copy of it
    *ppSomeInt=&b;
}

暂无
暂无

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

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