静态链表删除节点

删除静态链表第 i 个节点

void my_free(static_list_link *L, int q) { //模拟释放空间
    L[q].next = L[0].next;
    L[0].next = q;
}

bool Delete(static_list_link *L, int i, int *val) {

    int j = 1; //表示 p 下一个节点是第几个
    int p = MAX - 1; // p 为头节点

    while(L[p].next && j < i) { //循环,出来后, p 下一个节点为第 i 个
        p = L[p].next;
        j++;
    }

    if(!L[p].next || j > i) return false; //如果不满足

    int q = L[p].next; // q 表示第 i 个节点

    *val = L[q].date; //赋值连接
    L[p].next = L[q].next;

    my_free(L, q); //释放
    q = 0;

    L[MAX - 1].date--; //真实节点个数减一
    return true;
}
全部评论

相关推荐

爱看电影的杨桃allin春招:我感觉你在炫耀
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务