1. 程式人生 > 實用技巧 >24.兩兩交換連結串列中的節點

24.兩兩交換連結串列中的節點

24.兩兩交換連結串列中的節點

給定一個連結串列,兩兩交換其中相鄰的節點,並返回交換後的連結串列。

你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。

示例:

給定 1->2->3->4, 你應該返回 2->1->4->3. 程式碼
/**
 * 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 *left, *right, *temp,*end; if(head == NULL || head->next == NULL) { return head; } left = head; right = head->next; head = right; end = NULL;
while(left!=NULL&&right!=NULL) { temp = right->next; if(end) end->next = right; end = left; right->next = left; left->next = temp; left = temp; if(left) right = left->next; }
return head; } };