24. Swap Nodes in Pairs
Difficulty: Easy
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->3->4,得到2->1->4->3.
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* swapPairs(struct ListNode* head) {
if(head==NULL || head->next==NULL) //注意:链表为空或只有一个结点的情况
{
return head;
}
struct ListNode *temp=head->next;
head->next=head->next->next;
temp->next=head;
head=temp;
struct ListNode *x=head->next;
temp=x->next;
while(temp != NULL && temp->next != NULL)
{
x->next=temp->next;
temp->next=temp->next->next;
x->next->next=temp;
x=temp;
temp=x->next;
}
return head;
}