Swap Nodes in Pairs
问题描述:
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.
测试代码:
ListNode* swapPairs(ListNode* head) {
ListNode* adjacent;
ListNode* p;
ListNode* q;
if(!head)
return nullptr;
if(!head->next)
return head;
p = head;
adjacent = head->next;
head = head->next;
while(adjacent->next&&adjacent->next->next)
{
p->next = adjacent->next->next;
q = adjacent->next;
adjacent->next = p;
p = q;
adjacent = q->next;
}
if(adjacent->next)
{
p->next = adjacent->next;
adjacent->next = p;
}else
{
adjacent->next = p;
p->next = NULL;
}
return head;
}