题目:
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.
思路:
1.题目比较简单,一个一个换就可以,第一次交换需要更换一下头节点;
代码:
class Solution{
public:
ListNode *swapPairs(ListNode *head)
{
if(!head) return NULL;
ListNode *first=head,*second=head,*pre=head;
int flag=0;
while(first->next)
{
second=first->next;
first->next=second->next;
second->next=first;
if(!flag)
{
head=second;
++flag;
}
else
pre->next=second;
pre=first;
if(first->next)
first=first->next;
}
return head;
}
};