10几行的代码有个地方不懂。。。
- C/C++ code
Status ListInsert_L(Linklist L, int i, int e){ int j = 0; LNode *s, *p; p = L; while(p && j<i-1) { p = p->next; j++; } if(!p || j>i-1) // 这个地方为何还要判断j>i-1,这时是什么情况? return ERROR; s = (Linklist) malloc (sizeof(LNode)); if(s == NULL) return ERROR; s->data = e; s->next = p->next; p->next = s; return OK;}
这是个链表的插入。
if(!p || j>i-1) // 这个地方为何还要判断j>i-1,这时是什么情况?
代码中LNode表示结点。。。这些应该不用具体说明把。。。
[解决办法]
if(!p || j>i-1)
因为此时的 i-1 为负,在链表中不应该用负数来标记节点的下标,也就是说索引越界,因此会报错,这是本人的一点见解,不知对否
[解决办法]
!p || j>i-1 是对 p && j<i-1 的取反
[解决办法]
插入位置都不在链表的范围了
JF,再拿十分可用分
各位晚安
[解决办法]
嗯,为了预防可能出现的意外输入
[解决办法]
说错了,应该是
i是需要大于等于1的