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;
}