我试图弄清楚如何将节点附加到链接列表。 我觉得自己几乎就在那里但是在盯着代码一段时间之后我现在无法想到它的错误。
我必须提一下,在将第一个int添加到列表后,我得到了分段错误...
RewriteCond
我的错误在哪里?
答案 0 :(得分:1)
即使current为NULL,也会result
。
您必须在current->next = newNode;
:
(current == NULL)
或将if (current == NULL) {
pHead = newNode;
return;
}
else
{
while (current->next != NULL)
current = current->next;
}
current->next = newNode;
放入else语句中:
current->next = newNode;
完整示例:
if (current == NULL) {
pHead = newNode;
}
else
{
while (current->next != NULL)
current = current->next;
current->next = newNode;
}
答案 1 :(得分:1)
我认为问题在于:
@runtime/debug
最后一行if (current == NULL)
pHead = newNode;
else
{
while (current->next != NULL)
current = current->next;
}
current->next = newNode;
应位于current->next = newNode
正文中,否则当else
为NULL时,您将尝试取消引用NULL指针。
所以,它应该是:
current
另一个问题是你永远不会修改if (current == NULL)
pHead = newNode;
else
{
while (current->next != NULL)
current = current->next;
current->next = newNode;
}
。您只能修改head
内的头指针的私有本地副本。此修改在append()
之外不可见,因此程序最终会泄漏内存而您永远无法访问该列表(因为append()
始终为NULL)。您可以将head
设为pHead
(以便对node **
进行修改),或者您可以修改*pHead
内的head
,而不是传递它作为一个论点。这将起作用,因为您不会修改私有本地副本。以下是append()
的样子:
append()