LeetCodeBug-member access within null pointer of type 'struct ListNode

本文记录了在LeetCode解决链表题目时遇到的一个典型空指针异常错误,详细解析了错误的原因及解决方法,并附上了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转:https://blog.youkuaiyun.com/zy2317878/article/details/79115498

写在前面

这个BUG是我在做LeetCode的链表一类题目的时候遇到的,觉得还是蛮有代表性的,因为刚开始遇到这个BUG,我完全不知道哪里有问题,还与正确答案反复对比,结果发现完全一样,但我的就报错,后来发现原来是这个知识点完全没有接触过,所以就通过这篇博客来记录一下自己犯得错误,来提醒自己。

错误提示

这里写图片描述

错误原因

详细错误原因可以参考: LeetCode-206. Reverse Linked List

错误的含义:类型为“struct ListNode”的空指针内的成员访问。

根据:LEETCODE 中的member access within null pointer of type ‘struct ListNode’ 与112. Path Sum ,其实不难理解,这个问题主要是由于测试系统不知道当前的结点与结点的下一个结点是否为NULL,而自己有没有声明,所以系统不确定,于是就报错。这也说明了链表中的结点使用的时候比其他数据结构要严格一些,一定要时刻保证使用的结点不为NULL,为NULL要做出相应处理。

解决方法

刚开始按照别人的解决方法依葫芦画瓢做了一个判别语句:

while(second != NULL && second->next != NULL && first != NULL){
    ...
}
  • 1
  • 2
  • 3

但是依葫芦画瓢的都不是特准确,所以还是要好好理解。比如,在我使用:

ListNode *second=head->next;
  • 1

这个语句语义上没有问题,但是要确定head与head->next均不为NULL,所以就添加下面的语句即可:

while(head==NULL||head->next==NULL) 
    return head;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值