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 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * struct ListNode *next; 6 * }; 7 */ 8 struct ListNode* swapPairs(struct ListNode* head) { 9 int flag=0,tmp=0; 10 struct ListNode* p=head; 11 while(p!=NULL){ 12 if(0==flag&&p->next!=NULL){ 13 tmp=p->val; 14 p->val=p->next->val; 15 flag=1; 16 } 17 else if(1==flag){ 18 p->val=tmp; 19 flag=0; 20 } 21 p=p->next; 22 } 23 return head; 24 }