请教一道算法问题,为什么这里if语句里要加上j>i这个条件,感觉不可能出现这种情况,因为j=i时不是已经跳出while了吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
while循环的终止条件为:p为
NULL
或者j >= i
。链表空时p直接是
NULL
,返回ERROR
。链表非空,如果
i <= 0
,则j > i
,如果i > lenOf(LinkList)
,则p最终为NULL
,这两种情况都应该返回ERROR
。if (!p || j >i)
就是表示了第i个元素不存在的两种情况。这种代码的确会让人困惑,且该函数不够健壮,应该在函数的开头处检查输入参数,比如
L != NULL
和i >= 1
。如果i传进去的是0,或者链表为空,就走这个语句了,如题,这是带头结点的单链表
如果传值为0及0以下的int型值,while直接跳出,此时
j==1&&i==0
,return ERROR;
或者链表为空,
p==NULL
,直接return ERROR;
,不再检查j