Bla*_*mba -1 algorithm recursion linked-list
一个单链表,我想通过递归来修改它。但我不明白这一行的含义head->next->next = head;。
为什么需要head->next->next?
struct Node{
int data;
Node* next;
};
Run Code Online (Sandbox Code Playgroud)
下面是实现代码:
Node* reverseByRecursion(Node *head)
{
if(head == NULL || head->next == NULL)
return head;
Node *newHead = reverseByRecursion(head->next);
head->next->next = head;
head->next = NULL;
return newHead;
}
Run Code Online (Sandbox Code Playgroud)
让我来处理这份清单。
reverseByRecursion(node1) 叫做。node1也不node1->next是NULL,所以newHead = reverseByRecursion(head2);被称为。node2也不node2->next是NULL,所以newHead = reverseByRecursion(head3);被称为。head3->next是NULL,所以head3从 返回reverseByRecursion(head2)。head = node2和head->next = node3,所以head->next->next = head;将设置node3->next为node2。head->next = NULL;将设置node2->next为NULL. (图 2)newHead,也就是node3从 返回reverseByRecursion(head2)。head = node1和head->next = node2,所以head->next->next = head;将设置node2->next为node1。head->next = NULL;将设置node1->next为NULL. (图 3)newHead,也就是node3从 返回reverseByRecursion(node1)。node3作为头部。