我知道有很多答案,但我只是明白为什么我的代码不起作用。 你能帮忙吗?
void reverse_LList_R_fail(Node** head) {
Node* current = *head;
if(current->next == nullptr) {
*head = current;
return;
}
reverse_LList_R_fail(&(current)->next);
current->next->next = current;
current->next = nullptr;
}
PS:在我的LList实现中,我定义了Node* head = nullptr;作为一个全局变量,在我的理解中,我必须使用双指针。
对于初学者,该函数不检查*head
是否等于nullptr
。因此,该函数具有未定义的行为。
此外,通过指针传递到函数的原始头部也不会改变。
该函数可以如下所示
void reverse_LList_R_fail( Node **head )
{
if ( *head && ( *head )->next )
{
Node *current = *head;
*head = ( *head )->next;
reverse_LList_R_fail( head );
current->next->next = current;
current->next = nullptr;
}
}
并且该函数被调用为
reverse_LList_R_fail( &head );