一、两两交换链表中的节点
1.题目
24. 两两交换链表中的节点 - 力扣(LeetCode)
2.思路
![](https://i-blog.csdnimg.cn/direct/31e9fdd587244c22a5f50073d20c54ee.png)
3.代码
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
ListNode* dummyhead = new ListNode(0);//定于虚拟头结点
ListNode* cur = dummyhead;
dummyhead->next = head;//虚拟头结点记得要与链表头结点链接起来
//注意下面的判断顺序,先判断cur->next,如果它是空的,下面的cur->next->next会出现空指针操作
while(cur->next != nullptr && cur->next->next != nullptr){
ListNode* temp = cur->next;
ListNode* temp1 = cur->next->next->next;
cur->next = cur->next->next;
cur->next->next = temp;
temp->next = temp1;
cur = temp;
}
return dummyhead->next;//记得返回真实链表的头结点!!!
}
};