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

指定结点的后插操作

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;
}
相关推荐
handler0119 小时前
Git 核心指令速查
linux·c语言·c++·笔记·git·学习
学会去珍惜19 小时前
学会C语言可以做什么
c语言·网络编程·游戏开发·嵌入式系统·系统编程
fengenrong19 小时前
20260429
c++·算法
南宫萧幕19 小时前
Python与Simulink联合仿真:基于DQN的HEV能量管理策略建模与全链路排雷实战
开发语言·人工智能·python·算法·机器学习·matlab·控制
『昊纸』℃20 小时前
Mac上编译C语言的简易方法
c语言·mac·教程·xcode·编译
apollowing20 小时前
启发式算法WebApp实验室:从搜索策略到群体智能的能力进阶(优)
算法·启发式算法·web app
代码中介商20 小时前
C语言核心知识完全回顾:从数据类型到动态内存管理
c语言·开发语言
xiaobobo333020 小时前
c语言源文件中#include包含头文件的起始路径是哪里?
c语言·头文件包含·起始路径·起始点
liuyao_xianhui20 小时前
进程概念与进程状态_Linux
linux·运维·服务器·数据结构·c++·哈希算法·宽度优先
如君愿20 小时前
考研复习 Day 26 | 习题--计算机网络第三章(数据链路层 下)、数据结构 多维数组与广义表
数据结构·计算机网络·考研·记录考研