s4553711
4/4/2017 - 3:51 AM

206.cpp

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if (head == NULL || head->next == NULL) {
            return head;
        }
        ListNode* prev = NULL;
        ListNode* curr = head;
        ListNode* preceding = head->next;
        while (preceding != NULL) {
            curr->next = prev;
            prev = curr;
            curr = preceding;
            preceding = preceding->next;
        }
        curr->next = prev;
        return curr;
    }
};