LeetCode报错:runtime error: member access within null pointer of type ‘struct ListNode‘

发布于:2022-10-29 ⋅ 阅读:(657) ⋅ 点赞:(0)

错误题目:876. 链表的中间结点
错误原因:试图使用空指针
解决方法:找出等价判断条件进行替换,排除对空指针的引用。

/**

 * Definition for singly-linked list.

 * struct ListNode {

 *     int val;

 *     struct ListNode *next;

 * };

 */

struct ListNode* middleNode(struct ListNode* head){

 struct ListNode* fast=head;

 struct ListNode* slow=head;

 while(fast->next!=NULL &&fast->next->next!=NULL )

 {

     fast=fast->next->next;

     slow=slow->next;

 }

 if(fast->next->next==NULL)

 {

    slow=slow->next;

 }

 return slow;

}

 第一眼看上去好像没毛病,注意空指针的坑,下面看错误提示:

 说试图会使用空指?

if里面的判断,fast->next可能就是空指针,当fast->next为空时,fast->next->next即空指针的next,是错误的,由while循环条件可知,到if判断时,要么, fast->next为空,要么fast->next->next为空,因此我们把判断条件改为 if(fast->next!=NULL)即   等价于原报错判断。

 这样就成功啦,第一次写博客,有许多细节没注意到,勿怪。