LeetCode 24 Swap Nodes in Pairs
Translation
Given a linked list, swap every two adjacent nodes and return its header. For example, given 1-> 2-> 3-> 4, you should return 2-> 1-> 4-> 3. Your algorithm must use a unique and unchanged space. You cannot modify the values in the list. Only nodes can be changed.
Original
Give a linked list, swap every two adjacent nodes and return its head.For example, Given 1->2->3->4, you should return the list as 2->1->4->3.Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
Analysis
Let's take the 1, 2, 3, and 4 given in the question as an example and take them as two parts.
1,2 -- 3,4
Or I can draw a picture to make it more intuitive ......
Code
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode* next; * ListNode(int x): val(x), next(NULL) {} * }; */class Solution {public: ListNode* swapPairs(ListNode* head) { if(head == NULL) return NULL; if(head->next == NULL) return head; ListNode* temp = head->next; head->next = swapPairs(temp->next); temp->next = head; return temp; }};