读书人

10几行的代码有个地方不懂。解决方法

发布时间: 2012-02-04 15:43:09 作者: rapoo

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的

读书人网 >C++

热点推荐