Given 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.
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
if(!head ||head->next == NULL)
return head;
ListNode dum(0), *first, *second;
ListNode *temp = &dum;
dum.next = head;
while(temp->next != NULL && temp->next->next !=NULL)
{
first = temp->next;
second = temp->next->next;
first->next = second->next;
temp->next = second;
temp->next->next = first;
temp = temp->next->next;
}
return dum.next;
}
};