我试图以递归方式删除线性链表中的最后两个。我不明白为什么这段代码是段错误的。请帮忙。是否有更好或更正确的方法来递归删除最后两个节点?
int remove(node * & head)
{
if(!head)
return 0;
if(!head -> next)
{
delete head;
head = NULL;
}
if(!head -> next -> next)
{
return remove(head -> next);
delete head;
head = NULL;
}
return remove(head -> next);
}
答案 0 :(得分:0)
仔细查看head->next == NULL
:
if(!head -> next)
{
delete head;
head = NULL;
}
if(!head -> next -> next)
{
return remove(head -> next);
//some more code that can never be reached
}
...您设置head=NULL
,然后取消引用它。还有其他问题,但这是一个很好的起点。