各位大神们帮我看看这个单链表的插入删除算法
/* 初始条件:顺序线性表L已存在,1<=i<=ListLength(L) */
/* 操作结果:删除L的第i个数据元素,并用e返回其值,L的长度-1 */
Status ListDelete(LinkList *L, int i, ElemType *e)
{
int j;
LinkList p, q;
p = L;//指向第一个结点
j = 1;//计数器
while( p->next && j<i )//遍历这个单链表寻找第i-1个结点
{
p = p->next;
++j;
}
if( !(p->next) || j>i )
{
return ERROR;
}
q = p->next;
p->next = q->next;
*e = q->data;
free(q);
return OK;
}
if( !(p->next) || j>i )这个判断的意义是什么?为什么要加这个判断?