less than 1 minute read

<-E 206> Reverse Linked List

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode *curr= head;
        ListNode *next= NULL;
        ListNode *prev= NULL;

        while(curr !=NULL){
            next=curr->next;
            curr->next=prev;
            prev=curr;
            curr=next;
        }
        head=prev;
        return head;
    }
};

// method 2
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode *prev{};
            while(head)
                head=exchange(head->next,exchange(prev,head));
            return prev;
        }
};