1、首先两个表达式的输出情况
while(p!=NULL)
{
printf("%d",p->data);
p=p->next;
}

第一步:p指向第一个节点,第一个节点数据不为空;打印数据:1;p=p->next,指向第二个节点;
第二步:p指向第二个节点,第二个节点数据不为空;打印数据:2;p=p->next,指向第三个节点;
第三步:p指向第三个节点,第三个节点数据不为空;打印数据:3;p=p->next,指向第四个节点;
第四步:p指向第四个节点,第四个节点数据不为空;打印数据:4;p=p->next,指向第五个节点;
第五步:p指向第五个节点,第五个节点数据不为空;打印数据:5;p=p->next,指向第六个节点(不存在);
第六步:p指向第六个节点(不存在),p为空;退出循环。
while(p->next!=NULL)
{
printf("%d",p->data);
p=p->next;
}
第一步:p->next指向第二个节点,第二个节点数据不为空;打印数据:1;p=p->next,指向第二个节点;
第二步:p->next指向第三个节点,第三个节点数据不为空;打印数据:2;p=p->next,指向第三个节点;
第二步:p->next指向第四个节点,第四个节点数据不为空;打印数据:3;p=p->next,指向第四个节点;
第三步:p->next指向第五个节点,第五个节点数据不为空;打印数据:4;p=p->next,指向第五个节点;
第四步:p->next指向第六个节点(不存在),第六个节点为空;退出循环
2、说明
前一个:p != NULL -- 一直到最后未查找到时,p为NULL,对p进行操作了,如p->data等
后一个: p->next !=NULL--一直到最后未查找到时,p为最后一个节点,可以对p进行操作判断其数据等
3、什么时候使用
查找、插入时,使用p != NULL
删除时,使用p->next !=NULL,这样可以对p->data的数据进行判断
本文探讨了在链表操作中,条件p != NULL与p->next != NULL的区别。前者在遍历到末尾时会将p设为NULL,后者则允许在最后一个节点进行操作。在查找和插入过程中通常使用p != NULL,而在删除操作时,应使用p->next != NULL来确保正确判断节点数据。
8127

被折叠的 条评论
为什么被折叠?



