0

如果我有某种树,并且我需要在该树中找到一个基本上为空的特定节点(结构尚未初始化/malloc'ed)。

如果我想返回那个非常具体的未初始化结构位置以便能够对其进行初始化,则类似于:

if (parentNode->childNode == NULL)
    return parentNode->childNode;

工作?或者它会返回NULL吗?我需要返回父节点吗?

我遇到的问题是这个特定节点可能是多个不同结构类型的子节点。我不确定如何在 C 中克服这个问题,因为它不支持泛型。有没有人有任何想法?

4

4 回答 4

1

你不能返回NULL。它不会是一个可识别的位置。

但是,您可以做的是:

  • malloc找到它的节点并返回 malloc 返回的指针,
  • 您可以return &(parentNode->childNode)(指向 childNode 指针的指针)函数的调用者可以使用它来将其设置为新节点,或者
  • return parentNode

我看不出仿制药如何缓解这个问题。

于 2012-10-21T23:34:31.200 回答
0

您可以返回它parentNode并在child其他地方对其进行初始化。

于 2012-10-21T23:36:52.087 回答
0

您可以返回 NULL,但这没有任何意义。您可以返回指向值为 NULL 的指针的指针

typedef struct link {
        struct link *next;
        } LL;


LL **getTailPP(LL **ppHead)
{
    for( ; *ppHead; ppHead = &(*ppHead)->next ) {;}
    return ppHead;
}
于 2012-10-21T23:41:58.673 回答
0

如果子节点还没有初始化,那么你不能返回一个指向它的指针......你怎么能返回一个指向还不存在的东西的指针?

您需要做的是返回一个指向父节点指针的指针,然后可以将其更改为指向为子节点新分配的内存。

于 2012-10-21T23:43:38.830 回答