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.
struct ListNode* swapPairs(struct ListNode* head) {
if (!head || !head->next)
return head;
else
{
head->next->next = swapPairs(head->next->next);
struct ListNode* newHead = head->next;
struct ListNode* ptr = head->next->next;
newHead->next = head;
head->next = ptr;
return newHead;
}
}