链表的删除操作

前几个小时,我写了一篇关于链表的删除插入操作和链表求长度,并指明了pre的初始化

void deleteList(Node *L, int i)
{
    Node *pre = L, *r;
    int k = 0;
    while(pre->next != NULL && k < i-1)//找出i-1的位置
    {
        pre = pre->next;
        k ++;
    }
    if(!(pre->next))  //判断i是不是太大了,pre->next为空
    {
        printf("插入的节点有误\n", k);
        return 0;
    }
    r = pre->next;
    pre->next = r->next;
    free(r);
}

删除算法中的循环条件(pre->next != NULL && k < i-1)与前面的算法的循环条件(pre  != NULL &&  k < i -1)不同,

因为前插时的插入位置有m+1个位置。i = m+1是指在第 m+1 个位置前插入,即在单链表的末尾插入。而删除操作中删除的

合法位置只有m个。

posted @ 2017-03-20 17:23  大波非猫  阅读(612)  评论(0编辑  收藏  举报