链表指定节点的插入
向现有链表中插入结点,根据插入位置的不同,可分为以下 3 种情况:
- 插入到链表的头部,作为新的链表中第一个存有数据的结点(又称为”首元结点”);
- 插入到链表中某两个结点之间的位置;
- 插入到链表的最末端的位置;
使用头插法和尾插法可分别解决第 1 和第 3 种情况,但是无法解决第 2 种情况,所以本节给大家一段通用代码,可有效解决所有链表结点插入的问题。(分为节点前和节点后)
节点后插入
节点后插入分为以下几个步骤:
1.通过查找代码找到指定节点;
2.定义一个新节点,将指定节点的下一个节点地址赋给新节点;
3.将新节点地址赋给指定节点的下一个节点。
定义一个查找函数
int searchLink(struct Test *head,int Data)
{while(head != NULL){if(head->Data == Data)//输入的节点值刚好等于链表节点值{return 1;}head = head->next;}return 0;
}
定义一个节点后插入函数
int insertFronBehind(struct Test *head,int Data,struct Test *new)
{struct Test *p = head;while(p != NULL){if(p->Data == Data){new->next = p->next;//指定节点的下一个节点地址赋给新节点p->next = new;//将新节点地址赋给指定节点的下一个节点return 1;}p=p->next;}return 0;
}
主函数中创建一个新节点并调用以上两个函数
struct Test new={99,NULL};printLink(&t1);puts("after insert behind");insertFronBehind(&t1,3,&new);printLink(&t1);
这里是在原链表第三个节点处插入一个99,编译结果如下
节点前插入
节点前插入分为以下两种情况:
第一种是链表头插入,则链表头插入的地址改变了整个链表的地址,所以链表头插入的地址可以作为整个链表首地址,同时往下延申即可,就可以得到链表中的所有数据;
第二种是链表中插入,链表中插入的步骤是:
1.若p节点的下一个节点数据等于要插入的节点数据,则将插入的节点地址赋给新节点;
2.将p节点地址赋给新节点。
定义一个查找函数
int searchLink(struct Test *head,int Data)
{while(head != NULL){if(head->Data == Data)//输入的节点值刚好等于链表节点值{return 1;}head = head->next;}return 0;
}
定义一个节点前插入函数(分两种情况)
struct Test* insertFromfor(struct Test *head,int Data,struct Test *new)
{struct Test *p = head;if(p->Data == Data)//p的地址刚好的输入的地址,即链表头插入{new->next = head;return new;}while(p->next != NULL)//p的下一个不为空指针,如果为空指针就跳出循环,判断是不是在链表头{if(p->next->Data == Data)//p的下一个节点数据等于插入节点数据{new->next=p->next;//p下一个节点地址给新节点p->next=new;//新节点地址给pprintf("Insert ok\n");return head;}p=p->next;}printf("No this data%d\n",Data);return head;
}
主函数创建一个新节点调用上面两个函数
struct Test new1={111,NULL};struct Test *head=NULL;head = &t1;//若为链表头,则需要作为链表首地址;若不为链表头,就从t1正常输出printLink(head);head=insertFromfor(head,3,&new);printLink(head);
这里是在3前面插入一个111,编译结果如下:
相关文章:

链表指定节点的插入
向现有链表中插入结点,根据插入位置的不同,可分为以下 3 种情况: 插入到链表的头部,作为新的链表中第一个存有数据的结点(又称为”首元结点”);插入到链表中某两个结点之间的位置;插…...

解决问题Conda:CondaValueError: Malformed version string ‘~’ : invalid character(s)
解决问题Conda:CondaValueError: Malformed version string ‘~’ : invalid character(s) 背景 今天使用Conda构建项目运行环境的时候报错::CondaValueError: Malformed version string ‘~’ : invalid character(s) ##报错问题 在安装te…...

Sci Immunol丨Tim-3 适配器蛋白 Bat3 是耐受性树突状细胞
今天和大家分享一篇发表于2022年3月的文章,题目为“Tim-3 adapter protein Bat3 acts as an endogenous regulator of tolerogenic dendritic cell function”,发表在《Sci Immunol》杂志上。文章主要研究了Tim-3和其适配蛋白Bat3在调节免疫应答中的作用…...

天软特色因子看板(2023.10 第14期)
该因子看板跟踪天软特色因子A05005(近一月单笔流通金额占比(%),该因子为近一个月单笔流通金额占比因子,用以刻画股票在收盘时,主力资金在总交易金额中所占的比重。 今日为该因子跟踪第14期,跟踪其在SW801160 (申万公用事业) 中的表…...

Photoshop(PS)2021版 安装教程(图文教程超详细)
软件:PS版本:2021语言:简体中文大小:2.26G安装环境:Win11/Win10(1809以上版本)硬件要求:CPU2.0GHz 内存4G(或更高,不支持7代以下CPU)下载通道①百度网盘丨64位…...
详解React:Props构建可复用UI的基石
React是一种流行的JavaScript库,用于构建用户界面。它的组件化架构使得开发人员能够轻松地构建可复用的UI元素,从而提高开发效率。在本文中,我们将探讨React中的组件和Props的重要性,以及如何利用它们来构建可复用的UI。 引言 在…...

【Unity】【VR开发疑难】Unity运行就报无法启动XR Plugin
【现象】 连接Link后运行Unity的VR项目Link也无反映,Unity控制台报:无法启动XR Plugin,并说是由于Oculus头盔未连接导致。 【分析】 打开Oculus PC客户端,发现状态是连接正常。重启机器后,提示Oculus没有出于RunTim…...
本地启动Elasticsearch(docker启动)
一、es版本7.17.0 docker run -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -e ES_JAVA_OPTS"-Xms256m -Xmx256m" -d --name ES01 elasticsearch:7.17.0进入容器,修改/usr/share/elasticsearch/config/elasticsearch.yml 添加如…...

JVM修炼印记之初识
文章目录 JVM认识JVM的功能常见JVMHotSpot的发展历程 JVM认识 Java虚拟机(Java Virtual Machine,JVM)是一个用于执行Java字节码的虚拟计算机。它是Java语言的核心,可以在不同的操作系统和硬件平台上运行Java程序。 JVM负责将Java…...

开关电源老化试验和性能检测系统软件
开关电源自动测试系统由PC(工控机)、测试工装、可编程直流电源、数字示波器、可编程直流电子负载、继电器模块等部分组成,并通过RS232/LAN通讯总线、测试夹具以及其它线缆等进行连接,为系统组成结构。PC与可编程直流电源、数字示波器、可编程直流电子负载…...

水库大坝可视化智能远程监管方案,助力安全监测智能巡检
一、背景需求 水库大坝作为防洪度汛的重要设施,其安全问题直接关系到人民群众的生命财产安全。因此,必须加强对大坝水库的安全管理,对水库除险加固和运行管护要消除存量隐患,实现常态化管理,同时要配套完善重点小型水…...
C#学习系列之虚方法和多态
C#学习系列之虚方法和多态 啰嗦设计原则(六大类其中之一)基类的引用使用 共性与差异虚方法和多态的武器使用 其他总结 啰嗦 基础学习。 设计原则(六大类其中之一) **依赖倒置原则:**依赖抽象类,不依赖具体…...

面试算法44:二叉树中每层的最大值
题目 输入一棵二叉树,请找出二叉树中每层的最大值。例如,输入图7.4中的二叉树,返回各层节点的最大值[3,4,9]。 分析:用一个队列实现二叉树的广度优先搜索 由于要找出二叉树中每层的最大值,因…...
JWT的头部、载荷和签名分别包含哪些信息?
JWT(JSON Web Token)由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。每个部分都是经过Base64编码的JSON字符串。 1:头部(Header): 头部通常包含两个信息:令牌类型(typ)和所用的加密算法(alg)。令牌类型(typ)指示该令牌类型为JWT。加密算法(…...

【烧火柴问题】奇思妙想火柴
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

C++数据结构算法篇Ⅰ
C数据结构算法篇Ⅰ 📟作者主页:慢热的陕西人 🌴专栏链接:C算法 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 主要内容讲解数据结构中的链表结构 文章目录 C数据…...
Python selenium获取元素信息
视频版教程:一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、selenium 主要text属性和三个方法get_attribute(),get_property(),get_dom_attribute() text属性获取元素的文本信息; get_attribute(),ge…...
测试Winsock的select
说明 实现了一个回显一行字符串的服务器:客户端发送一行字符串,一’\n’结尾,服务器接受完一行后就原封不动地发回给客户端。 windows下对select的能监控的Socket数量是有限制的,若超过,一种方案是再开一个线程。 #i…...

CentOS 搭建 Hadoop3 高可用集群
Hadoop FullyDistributed Mode 完全分布式 spark101spark102spark103192.168.171.101192.168.171.102192.168.171.103namenodenamenodejournalnodejournalnodejournalnodedatanodedatanodedatanodenodemanagernodemanagernodemanagerrecource managerrecource managerjob hist…...

ModuleNotFoundError: No module named ‘paddle.fluid.incubate.fleet‘
在使用rocketqa的时候可能会遇到下面的问题: 问题: 解决方法: 这完全是paddlepaddle的问题。 在rocketqa/utils/optimization.py出现下面的语句,这个时候直接把出错的注释掉就可以,因为它完全没有用到。(…...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...

AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...