错误题目: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里面的判断,