typedef struct Lnode {
    ElemType data;            // 数据域
    struct Lnode *next;       // 指向下一节点的指针
} Lnode, *LinkList;

// 在带头结点单链表 L 的第 i 节点位置前面插入新的结点,新节点数据为 x
// 此处 i 为逻辑位序,如果插入成功后,刚插入的结点是第 i 个结点
// 插入成功返回 true,插入失败返回 false
bool Insert(LinkList L, int i, const ElemType x) {
    int j = 0;
    LinkList p = L, q;
    while (p && j < i - 1) {  // 寻找第 i-1 个结点
        p = p->next;
        j++;
    }
    if (!p || j > i - 1) {  // i 小于 1 或大于表长+1,插入位置非法
        return false;
    }
    q = (LinkList)malloc(sizeof(Lnode));  // 创建新结点
    q->data = x;
    q->next = p->next;
    p->next = q;  // 将新结点插入到链表中
    return true;
}

原文地址: https://www.cveoy.top/t/topic/oG9U 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录