描述
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(C++)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
class Solution { public: ListNode* swapPairs(ListNode* head) { if(head == NULL || head->next == NULL) { return head; } ListNode head_pre(-1); head_pre.next = head; ListNode *pre = &head_pre; ListNode *cur = pre->next; ListNode *next = cur->next; for(; next!=NULL; pre=cur, cur=pre->next, next=cur?cur->next: NULL) { pre->next = next; cur->next = next->next; next->next = cur; } return head_pre.next; } };
|
相关问题