c语言的一道程序执行问题

img


第一个语句的j那第二个if判断条件j>i-1还有必要吗

代码后面的备注很清楚了,!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是否为空就可以了。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632