题目来源:
leetcode题目,网址:24. 两两交换链表中的节点 - 力扣(LeetCode)
解题思路:
遍历时交换即可。
解题代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
ListNode* newHead=new ListNode;
newHead->next=head;
ListNode* node=newHead;
while(node->next!=nullptr && node->next->next!=nullptr){
ListNode* nextOne=node->next;
ListNode* nextTwo=node->next->next;
ListNode* nextThree=node->next->next->next;
node->next=nextTwo;
nextTwo->next=nextOne;
nextOne->next=nextThree;
node=node->next;
node=node->next;
}
return newHead->next;
}
};
总结:
官方题解给出了递归和迭代两种解法。