Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
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就跟上一個交換
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* swapPairs(ListNode* head) { ListNode* dummy = new ListNode(0); ListNode* pre = dummy; int count = 1; dummy->next = head; while (head != nullptr) { //偶數時交換 if (count % 2 == 0) { swap(pre->val, head->val); } pre = head; head = head->next; count++; } head = dummy->next; delete dummy; return head; } };