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

指定结点的后插操作

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;
}
相关推荐
励志的小陈2 小时前
贪吃蛇(C语言实现,API)
c语言·开发语言
知识浅谈2 小时前
DeepSeek V4 和 GPT-5.5 在同一天发布了??我也很懵,但对比完我悟了
算法
DeepModel2 小时前
通俗易懂讲透 Q-Learning:从零学会强化学习核心算法
人工智能·学习·算法·机器学习
田梓燊2 小时前
力扣:19.删除链表的倒数第 N 个结点
算法·leetcode·链表
简简单单做算法4 小时前
基于GA遗传优化双BP神经网络的时间序列预测算法matlab仿真
神经网络·算法·matlab·时间序列预测·双bp神经网络
阿豪学编程4 小时前
面试题map/unordered相关
数据结构
guygg885 小时前
利用遗传算法解决列车优化运行问题的MATLAB实现
开发语言·算法·matlab
武藤一雄5 小时前
19个核心算法(C#版)
数据结构·windows·算法·c#·排序算法·.net·.netcore
sali-tec5 小时前
C# 基于OpenCv的视觉工作流-章52-交点查找
图像处理·人工智能·opencv·算法·计算机视觉
梦想的颜色5 小时前
mongoTemplate + Java 增删改查基础介绍
数据结构·数据库·mysql