单链表-删除第i个结点


删除第 i 个结点

 

假设 i=3 ,删除后效果如下:

 

删除第 i 个元素,要找到第 i-1 个元素,要修改其指针域。

算法步骤:

① 找到第 i-1 个元素的存储位置 p,保存要删除的 ai 的值

② 令p->next 指向ai+1,如图:p->next = p->next->next

③ 释放 结点ai 的空间:delete q;或者 free(q);

代码部分:

//将线性表L中第i个数据元素删除
//传入参数里的 “&” 符号,含义为引用变量
Status ListDelete_L(LinkList &L, int i){
    if(i<1){
        return ERROR;
    }
    p = L->next;
    j = 1;
    while(p!=NULL && j!=i-1){
        p = p->next;
        j++;
    }
    if(p==NULL){
        return ERROR;
    }
    q = p->next;
    p->next = p->next->next;
    delete q;
    return OK;
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM