代码后面的备注很清楚了,!p是用来判断 插入位置 i 是否大于表长 ,后面的 j>i-1则是为了判断 i 是否小于1
你的纠结点应该是while循环执行完后,不满足while条件,肯定会满足if条件的意思吧。
代码不一定会执行while循环。如果代码不执行while循环的话,就是异常情况了,需要返回异常信息。
代码有点问题,应该先判断异常情况。
如果当前节点p是空节点,或者j>i-1的情况下,返回异常ERROR,不能插入。
然后再执行while循环。
如果对链表长度有要求,那么这个判断还是有必要的。p==NULL或者j超出i返回ERROR。
if的条件有点问题,
while的结束条件是p为空或者 j== i-1
if的条件 j>i-1这一条始终满足不了的。if中只需要判断p是否为空就可以了。