- 题号:力扣24
- 知识点:链表
- 目标完成度:54/150
- 总结
题干:
思路:
- 1.模拟题,主要是想明白这个过程
- 2.建一个虚拟头结点dummyNode,以减少对头结点的单独处理
- 3.先让当前结点的后继结点指向其后继结点的后继结点
- 4.然后让当前结点的后继结点的后继结点指向 原当前结点的后继结点(此处需要建一个临时结点tmp)
- 5.然后让当前结点的后继结点的后继结点的后继结点指向 原当前结点的后继结点的后继结点的后继结点(此处需要建一个临时结点tmp2)
- 6.最后让当前结点后移两位,也就是让当前结点指向其后继结点的后继结点。继续处理下一对结点
- 7.下图摘自代码随想录:
在这里插入图片描述
// C++
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
ListNode * _dummyNode = new ListNode(0);
_dummyNode->next = head;
ListNode *cur = _dummyNode;
while(cur->next != nullptr && cur->next->next != nullptr){
ListNode *tmp = cur->next;
ListNode *tmp2 = tmp->next->next;
cur->next = tmp->next;
cur->next->next = tmp;
cur->next->next->next = tmp2;
cur = cur->next->next;
}
return _dummyNode->next;
}
};



