从独立判断来说,加上fast !=NULL的判断更严谨
如果从代码相关性来看,前面的while循环会保证fast不为空,所以if不判断fast是否为空也成立,但会依赖于前面的判断。
slow不为空的判断,存粹只是从独立逻辑判断,因为下面代码直接对slow进行指针操作了。可能从while循环逻辑看,slow也不会为空
个人理解:
一开始fast和slow是相等的,有两种情况:
1、一开始能够进入while循环证明fast和slow一开始都不是NULL,此时如果while循环是因为break而退出的话,此时的slow和fast以及fast->next都不可能是NULL,后边的if判断不会走;如果while循环是因为条件不成立而退出的话,此时可以断定slow不可能是NULL,而fast或者fast->next肯定至少有一个是NULL,无论他们俩谁是NULL,后边的if判断条件肯定成立会执行。
2、一开始不能进入while循环证明fast和fast->next肯定至少有一个是NULL,因为还没走,所以此时if判断的slow其实也就是fast。