赞
踩
这个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){
...
}
但是依葫芦画瓢的都不是特准确,所以还是要好好理解。比如,在我使用:
ListNode *second=head->next;
这个语句语义上没有问题,但是要确定head与head->next均不为NULL,所以就添加下面的语句即可:
while(head==NULL||head->next==NULL)
return head;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。