Reverse a singly linked list.
Hint:
A linked list can be reversed either iteratively or recursively. Could you implement both?
迭代。
class Solution { public: ListNode* reverseList(ListNode* head) { ListNode* prev = nullptr; ListNode* curr = head; while (curr != nullptr) { ListNode* temp = curr->next; curr->next = prev; prev = curr; curr = temp; } head = prev; return head; } }; // 9 ms
递归。
class Solution { public: ListNode* reverseList(ListNode* head) { if (head == nullptr || head->next == nullptr) return head; ListNode *newHead = reverseList(head->next); head->next->next = head; head->next = NULL; return newHead; } }; // 9 ms