<-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;
}
};