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

回答:
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,或者链表为空,就走这个语句了,如题,这是带头结点的单链表
L->next;//认为是第1个节点,但不一定存在如果传值为0及0以下的int型值,while直接跳出,此时j==1&&i==0,return ERROR;
或者链表为空,p==NULL,直接return ERROR;,不再检查j
以上是 请教一道算法问题,为什么这里if语句里要加上j>i这个条件,感觉不可能出现这种情况,因为j=i时不是已经跳出while了吗? 的全部内容, 来源链接: utcz.com/p/194319.html



