静态链表插入

在静态链表第 i 个位置前插入数 val

//从备用链表中获取新节点
int my_malloc(static_list_link *L) {
    int t = L[0].next; //定义 t 为备用链表第一个节点

    L[0].date--; //备用节点个数减一

    if(t) L[0].next = L[t].next; //如果 t 不为空备用节点前进一个节点

    return t; //返回新节点
}

//插入
bool Insert(static_list_link *L, int i, int val) {

    if(i < 1 || i > L[MAX - 1].date + 1) return false; //如果位置 i 不合理,插入失败

    int p = MAX - 1; //定义 p 为头节点,下一个节点为第一个节点

    int q = my_malloc(L); //定义 q 申请一个新节点

    if(q) { //如果 q 不为空

        for(int j = 1; j < i; j++) p = L[p].next; //循环 p 下一个节点为第 i 个节点

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

        L[MAX - 1].date++; //节点个数加一

        return true;
    }

    return false; // q 为空返回无法插入
}
全部评论

相关推荐

11-27 12:43
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
dongsheng66:如果想进大厂的话,在校经历没必要占这么大篇幅,可以把专业技能单独放一个专栏写,可以加个项目经历
点赞 评论 收藏
分享
10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务