java数据结构单链表 求单链表长度

intCLLength(CLTypehead){CLTypehtemp;intlen=0;htemp=head;while(htemp!=null){len++;htem... int CLLength(CLType head){
CLType htemp;
int len=0;
htemp=head;
while(htemp!=null){
len++;
htemp=htemp.nextNode;
}
return len;
}
这个是求单链表长度
、、、、、、、、、、、、、、、、、、
while(htemp!=null){
len++;
htemp=htemp.nextNode;
}
这一句我不明白 求大神讲解
、、、、、、、、、、、、、、、、、、
假设有一个链表如下:
head——》【A()】——》B【()】——》【C()】——》【D()】——》【E(null)】
如果按照我不理解的那一句来运算的话,我感觉不包括头结点的长度应该是6

但是正确的不包括头结点的长度是5
求讲解
(我没有悬赏了,可伶可怜我吧,谢谢大家)
展开
 我来答
魔都TnU
推荐于2017-09-08 · 超过32用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:45.5万
展开全部
是这样的,你先去确定一下是不是head==A。而不是head.nextNode==A
如果是的话,那5就是对的。从A开始算,只有5个。到E后是空的,不会再循环。

你可能理解成了head.nextNode==A

按我的理解,head和A这两个引用的是同一个对象。于是:
while(htemp!=null){//这时候htemp就是A所引用的对象
len++;//先加1
htemp=htemp.nextNode;//htemp指向B引用的对象。
}
451177500
2015-02-02 · TA获得超过1263个赞
知道小有建树答主
回答量:946
采纳率:25%
帮助的人:479万
展开全部
不包含头节点的长度是5的,但是这个代码把头节点包含进去了。
追问
按照代码运行出来的长度是不包含头结点的
但是我自己拿笔算循环总是6(按我举得那个例子)我现在就是不明白为什么不是6
head指向的不是A么,然后B,C,D,E,这是i=5,E不为空啊,再循环一次,然后i不就6了么??
追答
situjm的回答是对的,应该是head==A。

第1遍循环,len=1,htemp=B;
第2遍循环,len=2,htemp=C;
第3遍循环,len=3,htemp=D;
第4遍循环,len=4,htemp=E;
第5遍循环,len=5,htemp=null;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式