麻麦皮 发表于 2020-5-22 19:08:45

单链表删除的问题

小甲鱼视频代码
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,就返回错误,永远无法删除最后一个位置了。
求解释一下。

Sally2121 发表于 2020-5-23 11:43:20

这是针对带头结点的链表
比如删除最后一个结点(也就是第三个结点),开始循环,p指向第一个结点,j=2;p指向第二个结点,j=3;
退出循环,if条件不满足;
执行下面的语句,删除第三个结点,也是最后一个结点。

Sally2121 发表于 2020-5-23 11:44:51

第一次回答问题,不知道对不对,如果有不对的,请指正{:10_312:}

麻麦皮 发表于 2020-5-23 20:15:56

Sally2121 发表于 2020-5-23 11:43
这是针对带头结点的链表
比如删除最后一个结点(也就是第三个结点),开始循环,p指向第一个结点,j=2;p指 ...

我昨晚自己走了一遍解决了,还是谢谢你,这数据结构这区域挺冷清的...
页: [1]
查看完整版本: 单链表删除的问题