两两交换链表中的节点

it2026-03-29  10

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

 

示例:

给定 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 *front = new ListNode(0); front->next = head; if(head == NULL) return head; ListNode *pre_front = head->next; while(front->next != NULL && front->next->next != NULL){ ListNode *curr = front->next; front->next = curr->next; curr->next = curr->next->next; front->next->next = curr; front = front->next->next; // 偶数个 if(front->next == NULL){ head = pre_front; continue; } // 奇数个 if(front->next->next == NULL) head = pre_front; } return head; } };

 

最新回复(0)