如果我有某种树,我需要在该树中找到一个基本上为null的特定节点(该结构尚未初始化/ malloc')。
如果我想返回那个非常具体的未初始化的结构位置以便能够初始化它,那就像:
if (parentNode->childNode == NULL)
return parentNode->childNode;
工作?或者它会返回NULL吗?我需要返回父节点吗?
我遇到的问题是这个特定节点可能是多个不同结构类型的子节点。我不知道如何在C中克服这个问题,因为它不支持泛型。有没有人有任何想法?
答案 0 :(得分:1)
您无法返回NULL。它不是一个可识别的位置。
但你可以做的是:
malloc
您找到它的点上的节点并返回malloc返回的指针,return &(parentNode->childNode)
(指向childNode指针的指针)调用者
该函数可用于将其设置为新节点,或return parentNode
我不知道仿制药如何减轻这个问题。
答案 1 :(得分:0)
您可以返回parentNode
并在其他位置初始化child
。
答案 2 :(得分:0)
你可以返回NULL,但这没有任何意义。您可以将指针返回到值为NULL的指针:
typedef struct link {
struct link *next;
} LL;
LL **getTailPP(LL **ppHead)
{
for( ; *ppHead; ppHead = &(*ppHead)->next ) {;}
return ppHead;
}
答案 3 :(得分:0)
如果子节点尚未初始化,那么你不能返回一个指向它的指针......你如何返回指向不存在的东西的指针?
您需要做的是返回指向父节点指针的指针,然后可以将指针更改为指向子节点新分配的内存。