题目来源:
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;}
};
总结:
官方题解给出了递归和迭代两种解法。