很简单的关于链表的问题(求解答

就爱瞎逛 2019-03-10 08:12:52
int Length(List L){//求链表长度
int i=0;
while(L){
L=L->Next;
i++;
}
L->Next=NULL;
return i;
}

为什么在上面那个代码里,加了L->Next=NULL;这个就出错,删掉的话就能正常得出表长?
为什么加了L->Next=NULL就出错?

如果一定要L->Next=NULL;这句,就要用下面的代码。上下两段代码有什么区别吗?
int Length(List L){
List p=L;
int i=0;
while(p){
p=p->Next;
i++;
}
L->Next=NULL;
return i;
}
...全文
83 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
wingrez 2019-03-10
  • 打赏
  • 举报
回复
在第一段代码中,请理解,当跳出while循环时,L的值为NULL,无法对其解引用操作。 第二段代码,怀疑有逻辑错误,第8行的作用是,将L的后继结点“删除”,也就说链表中将只剩下一个结点。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧