C 是否通过将链接列表的最后一个节点传递到一个空节点来删除该节点?
当列表用作空中的参数时,此代码将删除链接列表的标题C 是否通过将链接列表的最后一个节点传递到一个空节点来删除该节点?,c,nodes,C,Nodes,当列表用作空中的参数时,此代码将删除链接列表的标题 void removeNode(node** head) { (*head) = NULL; } 如何更改此代码以将列表中用作参数的最后一项设置为NULL 注意:我从主void调用此方法,希望用作“head”参数的列表的最后一个节点为NULL。删除是什么意思?删除?。分配的内存需要使用free(ptr)来释放。“将其传递到一个void”?此代码删除链接列表的标题“为什么要这样做?”?你是在尝试实现某种FIFO吗?“列表用作空中的参数”
void removeNode(node** head) {
(*head) = NULL;
}
如何更改此代码以将列表中用作参数的最后一项设置为NULL
注意:我从主void调用此方法,希望用作“head”参数的列表的最后一个节点为NULL。删除是什么意思?删除?。分配的内存需要使用free(ptr)来释放。“将其传递到一个void”?此代码删除链接列表的标题“为什么要这样做?”?你是在尝试实现某种FIFO吗?“列表用作空中的参数”在什么中?“我应该如何更改此代码以将列表中用作参数的最后一项设置为NULL?”如果这是您想要做的,那么为什么要将head作为指针传递给指针?“main void”什么是main void?@Coconop您的意思是将值设置为NULL就是删除?分配的内存未被释放still@Coconop但这实际上并没有将节点设置为NULL。。我不需要将上一个节点也设置为NULL吗?@Coconop:tmp
tmp
initialized在哪里?您错过了案例,其中head
为NULL
/列表为EMPTY
,此处tmp->next
将给出错误信息
void removeLastNode(node ** head)
{
if(!head || !(*head) || !(*head->next))
return;
node * tmp = *head;
node * new_last;
// Reach the last node
for(;tmp->next;)
{
new_last = tmp;
tmp = tmp->next;
}
freeNode(tmp);
tmp = NULL;
new_last->next = NULL;
}