206. Reverse Linked List #Linked List (Easy)

Problem:

Reverse a singly linked list.

Solution:

//my solution
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(head == NULL || head->next == NULL) return head;
        ListNode* it = head;
        ListNode* prev = NULL;
        ListNode* next = it->next;
        while(1)
        {
            it->next = prev;
            prev = it;
            it = next;
            if(it == NULL) break;
            next = it->next;
        }
        head = prev;
        return head;
    }
};
//recursion solution
class Solution {
public:   
    ListNode* reverseList(ListNode* head) {
        if (!head || !(head -> next)) return head;
        ListNode* node = reverseList(head -> next);
        head -> next -> next = head;
        head -> next = NULL;
        return node; 
    }
}; 

LeetCode Discussion

你可能感兴趣的:(206. Reverse Linked List #Linked List (Easy))