题目:
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.
分析:
链表,交换两个数的位置。要求,不能修改node的值,只能修改指针的指向。
思路:
交换相邻两个node的指针指向。
代码:
ListNode* swapPairs(ListNode* head) {
ListNode* l = new ListNode(0);
ListNode* l1 = l;
ListNode* head1;
ListNode* h;
l->next = head;
while(head && head -> next)
{
head1 = head->next;
h = head1 -> next;
l->next = head1;
head1 ->next = head;
head -> next = h;
l = head;
head = head -> next;
}
return l1->next;
}