求解 数据结构链表内容 打问号处 麻烦解释一下原因 谢谢啦

2024-12-16 17:31:11
推荐回答(1个)
回答1:

p = L;
while(p && j < i - 1) {
    p = p->next;
    ++j;
}

结束上面的循环有两个条件,一是p == NULL;,此时可能满足j < i - 1;,也可能不满足。二是 j == i - 1,也可能满足 p == NULL;,也可能不满足。

if(!p || j < i - 1) retunr false;

只要满!p,则表明链表指针已经指向NULL,而不是希望的两个链表节点之间,故插入失败。如果满足j < i - 1,此时,可以插入新的节点,如此看来,该句有问题,应该改为if(p == NULL) return false;