euisblue
206. Reverse Linked List

C++: Iterative

1class Solution { 2 public: 3 ListNode* reverseList(ListNode* head) { 4 ListNode *prev = nullptr; 5 ListNode *curr = head; 6 7 while (curr != nullptr) { 8 ListNode *temp = curr->next; 9 curr->next = prev; 10 prev = curr; 11 curr = temp; 12 } 13 14 return prev; 15 } 16};

C++: Recursion

1class Solution { 2 public: 3 ListNode* reverseList(ListNode* head) { 4 if (head == nullptr || head->next == nullptr) return head; 5 6 ListNode *p = reverseList(head->next); 7 head->next->next = head; 8 head->next = nullptr; 9 return p; 10 } 11};

JavaScript: Iterative

1var reverseList = function(head) { 2 let prev = null; 3 let curr = head; 4 5 while(curr != null) { 6 let temp = curr.next; 7 curr.next = prev; 8 prev = curr; 9 curr = temp; 10 } 11 12 return prev; 13};

JavaScript: Recursion

1var reverseList = function(head) { 2 if (head == null || head.next == null) return head; 3 4 let p = reverseList(head.next); 5 head.next.next = head; 6 head.next = null; 7 return p; 8};

Ruby: Iterative

1def reverse_list(head) 2 prev = nil 3 curr = head 4 5 while(curr != nil) do 6 temp = curr.next 7 curr.next = prev 8 prev = curr 9 curr = temp 10 end 11 12 return prev 13end

Ruby: Recursion

1def reverse_list(head) 2 return head if head==nil or head.next==nil 3 4 p = reverse_list(head.next) 5 head.next.next = head 6 head.next = nil 7 p 8end