Reverse a singly linked list.
非递归:
ListNode* reverseList(ListNode* head) {
ListNode* prev = nullptr;
ListNode* curr = head;
ListNode* next;
while(curr){
next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
return prev;
}
递归:
ListNode* reverseList(ListNode* head) {
if(!head) return nullptr;
ListNode* next = head->next;
if(!next) return head;
next = reverseList(next);
head->next->next = head;
head->next = nullptr;
return next;
}