请教一道算法问题,为什么这里if语句里要加上j>i这个条件,感觉不可能出现这种情况,因为j=i时不是已经跳出while了吗?

发布于 2022-09-04 15:14:55 字数 128 浏览 17 评论 0

Image

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

白馒头 2022-09-11 15:14:55
  1. while循环的终止条件为:p为NULL或者j >= i

  2. 链表空时p直接是NULL,返回ERROR

  3. 链表非空,如果i <= 0,则 j > i,如果i > lenOf(LinkList),则p最终为NULL,这两种情况都应该返回ERROR

  4. if (!p || j >i)就是表示了第i个元素不存在的两种情况。

  5. 这种代码的确会让人困惑,且该函数不够健壮,应该在函数的开头处检查输入参数,比如L != NULLi >= 1

残疾 2022-09-11 15:14:55

如果i传进去的是0,或者链表为空,就走这个语句了,如题,这是带头结点的单链表

L->next;//认为是第1个节点,但不一定存在

如果传值为0及0以下的int型值,while直接跳出,此时j==1&&i==0return ERROR;
或者链表为空,p==NULL,直接return ERROR;,不再检查j

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文