1 递归版
ListNode *reverse(ListNode *head) {
if (head == nullptr || head->next == nullptr)
return head;
ListNode *newHead = reverse(head->next);
head->next->next = head;
head->next = nullptr;
return newHead;
}
2 非递归版
ListNode* reverseList(ListNode* head) {
ListNode* prev = nullptr, *next = nullptr;
while(head)
{
next = head->next;
head->next = prev;
prev = head;
head = next;
}
return prev;
}