本人菜鸟一个,在学习严蔚敏版本数据结构的习题时发现一个问题,求大神帮助

本人菜鸟一个,在学习严蔚敏版本数据结构的习题时发现一个问题,求大神帮助

问题描述:

大家看标红的部分,为什么不直接写成while(p->next)
{p=p->next;
i++;}
,是不是为了提高效率?

 while(p->next)
{p=p->next;
i++;}
你这种写法,如果P是null呢,p->next就报错了。p是否存在是必须判断的,其他怎么写是另一回事了。

不可以写成那样,判断p=p->next时,while(p)是判断是否到链尾,如果是用while(p=p->next),自然会少执行一次i++.

if(p)
i++;
while(p=p->next){
i++;
}

//这样是可以的