标签:
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.
[Solution]
1 ListNode *swapPairs(ListNode *head) 2 { 3 ListNode dummy = ListNode(0), *p = &dummy, *q = head, *r = NULL; 4 dummy.next = head; 5 if (head == NULL || head->next == NULL) 6 return head; 7 8 r = q->next; 9 while (r != NULL) 10 { 11 q->next = r->next; 12 r->next = q; 13 p->next = r; 14 p = q; 15 q = q->next; 16 r = (q == NULL) ? NULL : q->next; 17 } 18 19 return dummy.next; 20 }
[leetcode 24] Swap Nodes in Pairs
标签:
原文地址:http://www.cnblogs.com/ym65536/p/4412527.html