
p!=NULL与p->next!=NULL区别?
p!=NULL与p->next!=NULL区别?当用循环后(p=p->next),当p指向最后一个节点时,若使用判断语句判断p!=NULL与p->next!=NULL,此...
p!=NULL与p->next!=NULL区别?
当用循环后(p=p->next),当p指向最后一个节点时,若使用判断语句判断p!=NULL与p->next!=NULL,此时哪个语句再起作用?它们有啥区别啊? 展开
当用循环后(p=p->next),当p指向最后一个节点时,若使用判断语句判断p!=NULL与p->next!=NULL,此时哪个语句再起作用?它们有啥区别啊? 展开
4个回答
展开全部
都起作用,前一个,p就是尾结点,后一个p是尾结点的前一个结点,单链表需要找到前一个结点,才能插入和删除,双链表找到结点本身就可以插入和删除,修改数据的话,找到结点本身最好!链表是存储数据的,数据才是程序要用的,链表只是数据存放的手段!只所以会有各种数据结构,是数据的组织方式要求的,各种数据结构相关的算法,都是为使用数据服务的!
展开全部
在C/C++中,遍历到最后一个节点时,p->next == NULL,但是 p->data,即数据域里还是有数值的,所以此时 p! =NULL。虽然NULL在Java和PHP中写作null,但是,数据结构和具体语言是无关的,这个道理在Java和PHP中也是一样的,p->next只是p的一部分,p->next为null,并不代表p为null
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
前者是判定p指针本身是否为空,
后者是判定p指向的结构中的next元素是否为空。
后者是判定p指向的结构中的next元素是否为空。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关于循环条件p!=NULL和p->next!=NULL
1)p!=NULL最后p指向最后一个结点的下一个位置,还未能开始此位置上的操作,但是前一次操作是在最后一个结点完成的,所以可能越界。最后一次循环(执行了操作)中,在p=p->next之前的操作是在最后一个结点上的操作,在p=p->next之后的操作是在最后一个结点下一个位置的操作。此循环条件下不能设置如p->next->data等越界操作
2)p->next!=NULL最后p指向最后一个结点,还未能开始最后一个结点上的操作。最后一次循环(执行了操作)中,在p=p->next之前的操作是在倒数第二个结点上的操作,在p=p->next之后的操作是在最后一个结点上的操作
1)p!=NULL最后p指向最后一个结点的下一个位置,还未能开始此位置上的操作,但是前一次操作是在最后一个结点完成的,所以可能越界。最后一次循环(执行了操作)中,在p=p->next之前的操作是在最后一个结点上的操作,在p=p->next之后的操作是在最后一个结点下一个位置的操作。此循环条件下不能设置如p->next->data等越界操作
2)p->next!=NULL最后p指向最后一个结点,还未能开始最后一个结点上的操作。最后一次循环(执行了操作)中,在p=p->next之前的操作是在倒数第二个结点上的操作,在p=p->next之后的操作是在最后一个结点上的操作
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询