单链表指定结点的后插 前插操作

指定结点的后插操作

cpp 复制代码
#define NULL 0

typedef struct LNode
{
    int data;
    struct LNode* next;
}LNode, * LinkList;

//后插操作:在p结点后插入元素e
bool InsertNextNode(LNode* p, int e) {
    if (p == NULL)
        return false;
    LNode* s = (LNode*)malloc(sizeof(LNode));
    if (s == NULL)                  //分配内存失败
        return false;
    s->data = e;                        //用结点s保存数据e
    s->next = p->next;
    p->next = s;                        //将结点s连到p后
    return true;
}

bool ListInsert(LinkList& L, int i, int e) {
    if (i < 1)
        return false;
    LNode* p = L;           //指针p指向当前扫描结点,目前指向头结点,是第0个
    int j = 0;              //当前p指向第几个结点
    while (p != NULL && j < i - 1)          //循环指到第i-1个结点
    {
        p = p->next;
        j++;
    }
    //return InsertNextNode(p, e);
    return InsertPriorNode(p, e);
}

指定结点的前插操作

cpp 复制代码
//前插操作:在p结点之前插入元素e
bool InsertPriorNode(LNode* p, int e) {
    if (p == NULL)
        return false;
    LNode* s = (LNode*)malloc(sizeof(LNode));
    if (s == NULL)                  //分配内存失败
        return false;
    s->next = p->next;
    p->next = s;
    s->data = p->data;              // 将p中元素复制给s
    p->data = e;                        // p中元素覆盖为e
    return true;
}
相关推荐
qq_401700412 小时前
嵌入式用Unix时间的优势及其C语言转换
服务器·c语言·unix
mit6.8244 小时前
bfs|栈
算法
CoderYanger5 小时前
优选算法-栈:67.基本计算器Ⅱ
java·开发语言·算法·leetcode·职场和发展·1024程序员节
jllllyuz6 小时前
Matlab实现基于Matrix Pencil算法实现声源信号角度和时间估计
开发语言·算法·matlab
稚辉君.MCA_P8_Java6 小时前
DeepSeek 插入排序
linux·后端·算法·架构·排序算法
多多*6 小时前
Java复习 操作系统原理 计算机网络相关 2025年11月23日
java·开发语言·网络·算法·spring·microsoft·maven
.YM.Z7 小时前
【数据结构】:排序(一)
数据结构·算法·排序算法
Chat_zhanggong3457 小时前
K4A8G165WC-BITD产品推荐
人工智能·嵌入式硬件·算法
百***48077 小时前
【Golang】slice切片
开发语言·算法·golang
墨染点香8 小时前
LeetCode 刷题【172. 阶乘后的零】
算法·leetcode·职场和发展