单链表删除的问题
小甲鱼视频代码Status ListDelete(LinkList *L, int i, ElemType *e)
{
int j = 1;
LinkList p, q;
p = *L;
while(p->next && j < i) //遍历第1个位置~最后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;
}
如果要删除最后一个位置,最后一个位置的next必为NULL,就返回错误,永远无法删除最后一个位置了。
求解释一下。 这是针对带头结点的链表
比如删除最后一个结点(也就是第三个结点),开始循环,p指向第一个结点,j=2;p指向第二个结点,j=3;
退出循环,if条件不满足;
执行下面的语句,删除第三个结点,也是最后一个结点。 第一次回答问题,不知道对不对,如果有不对的,请指正{:10_312:} Sally2121 发表于 2020-5-23 11:43
这是针对带头结点的链表
比如删除最后一个结点(也就是第三个结点),开始循环,p指向第一个结点,j=2;p指 ...
我昨晚自己走了一遍解决了,还是谢谢你,这数据结构这区域挺冷清的...
页:
[1]