如果我有某种树,并且我需要在该树中找到一个特定的节点,该节点本质上是null的(struct尚未初始化/malloc'ed)。
如果我想返回那个非常特定的非初始化的结构位置以便初始化,那会像:
一样if (parentNode->childNode == NULL)
return parentNode->childNode;
工作?还是返回null?我需要返回父节点吗?
我遇到的问题是,该特定节点可能是多种不同结构类型的孩子。我不确定如何在C中克服这一点,因为它不支持仿制药。有人有任何想法吗?
您无法返回null。这将不是可识别的位置。
但是您可以做的是:
-
malloc
在找到它的位置的节点并返回Malloc返回的指针, - 您可以
return &(parentNode->childNode)
(指向儿童点指针的指针)该函数可以将其设置为新节点或 -
return parentNode
我看不出仿制药如何缓解这个问题。
您可以返回该parentNode
并将其child
在其他地方初始化。
如果尚未初始化子节点,那么您将无法返回指针...如何将指针返回到尚不存在的东西?
您需要做的是将指针返回到父节点的指针,然后可以更改为指向子节点的新分配内存。
您可以返回null,但这是没有意义的。您可以将指针返回到值为null的指针:
typedef struct link {
struct link *next;
} LL;
LL **getTailPP(LL **ppHead)
{
for( ; *ppHead; ppHead = &(*ppHead)->next ) {;}
return ppHead;
}