力扣两两交换链表中的结点C++

题目


知识点

虚拟头节点


思路

注意交换的是整个结点,不是数值


错误

空指针异常

复制代码
while (cur->next && cur->next->next) { }

不能交换cur->next和cur->next->next,要是交换了,可能会找不到cur->next而发生空指针异常。


代码

cpp 复制代码
class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        ListNode* dummy = new ListNode(0, head);
        ListNode* cur = dummy;
        //不能交换顺序,不然cur->next->next走到cur->next的时候就可能空,发生空指针异常
        while (cur->next && cur->next->next) {
            ListNode* temp = cur->next;
            ListNode* temp1 = cur->next->next->next;
            cur->next = cur->next->next;
            cur->next->next = temp;
            temp->next = temp1;
            cur = cur->next->next;
        }
        return dummy->next;
    }
};
相关推荐
夏幻灵4 小时前
LeetCode 21:合并两个有序链表——双指针与哑节点详解
算法·leetcode·链表
徐小黑ACG6 小时前
Golang 基础05 结构体struct
开发语言·算法·golang
码完就睡6 小时前
数据结构——红黑树
数据结构
码爸6 小时前
数据结构详细介绍
数据结构
Navigator_Z6 小时前
LeetCode //C - 1286. Iterator for Combination
c语言·算法·leetcode
北极有牛7 小时前
cpp学习笔记--常量指针
java·开发语言·算法
GPU实战笔记7 小时前
云端 GPU 训练的账户余额提醒:它能说明什么,不能说明什么?
深度学习·算法·成本管理·gpu云计算·云端训练
半杯咖啡半行码7 小时前
C++ 编程与 STL 模板:从泛型编程到内存安全详解
开发语言·c++
浮链序7 小时前
怎么证明"你这个模型是偷我的"——把蒸馏变成取证工具
算法·安全·llm