单链表的创建与修改

news2024/11/23 23:44:49

链表的分类:

链表可按照:1.双向,单向。2.循环,不循环。3.带头,不带头。

根据不同组合可分为8类。其中不带头单项不循环链表为单链表。

单链表的第一个节点为头节点:

节点的创建:

通过这样一个函数我们可以实现创建链表的每一个结点。

其中每一个节点都是一个结构体,有两个变量,一个变量为值,另一个变量为指向下一个节点的指针。如果没有下一个节点则指向空节点(NULL)。

上图SLTDataType是我们使用typedef取名的变量类型,原名为int。

链表的输出:

将头节点的指针传给函数,当当前节点不为空时,输出当前节点的值并指向下一个节点。

链表的尾插:

注意:我们传入的是头节点的指针,目的是可以改变存储头节点地址的指针

首先使用assert防止传入的指针为空指针。

然后创建一个新的节点。

1.

如果一开始就没有元素,那么就将新产生的节点作为头节点。

2.

如果一开始有元素,那么就要一直往下找(注意:'*'的优先级比'->'高,所以要套括号)。当找到的节点的下一个节点为空,则证明该节点为链表的最后一个元素,将新节点插在该节点的后方即可,

头插:

与尾插同样的原理,如果没有元素则将头节点指向新节点。

如果有元素,那么则将新元素放在头节点的下一个节点即可。新节点指向头节点的下一个位置,头节点指向新节点即可。(顺序不能调换,否则就找不到原来的元素了)

尾删:

还是要先报警告,传进去的不能为空指针。

1.如果原链表只有一个元素,那么就free掉头节点,将头节点指向NULL。

2.如果不止一个元素,则一直往后找。直到某一个元素他的下一个节点的下一个节点为空。

如果只是找到某个节点他的下一个节点为空那么就没有办法实现将倒数第二个元素的下一个节点指向空。

头删:

与尾删类似的原理。但是会方便很多,只要让头节点指向第二个节点即可。

查找元素:

就单纯的往后找,如果某个节点的值为指定的值就返回地址,否则返回空。

但是缺点是只能找到第一个指定元素的地址。

在指定位置之前插入元素:

如果是是头节点那么进行头插,如果不是则找到那一个节点的前一个节点,前一个节点指向新节点,新节点指向指定位置即可。

删除指定位置节点:

同样的原理,头节点头删,非头节点则找到对应位置的前一个位置,使他指向对应位置的后一个位置,释放掉对应位置即可。

在指定位置之后插入数据:

找到对应节点,对应节点指向新节点,新节点指向对应节点的下一个位置(非头尾节点需要改前后位置),尾节点则指向新节点即可。

删除pos之后的节点:

都是类似的。因为是删除之后的位置,所以修改的是pos节点和pos后两个节点的位置。因此特殊的位置只有尾节点的前一个结点和尾节点,只需要修改一个值(尾节点free(NULL),非尾节点释放尾节点)。

销毁链表:

从前往后删即可,多一个指针存储当前位置,当前位置指针指向后一位,释放掉新增的指针即可。

解释:最后的情况是,a指向尾节点,mn指向尾节点的后一个位置即NULL,释放尾节点,mn为空退出循环)

释放完全部元素之后将需要将记录头节点的指针置空,因此传递的是二级指针。

总结:需要可能修改记录头节点的指针则传递二级指针,不需要则只需传递一级,仅修改结构体的值即可。

展示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1591869.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024 年排名前 5 的 CSS 框架

文章目录 1、Bootstrap2、Tailwind CSS3、Foundation4、Bulma5、UIKit 1、Bootstrap Bootstrap框架是由Twitter的设计师Mark Otto和Jacob Thornton合作开发的,于2011年8月在GitHub上发布。它是目前最受欢迎的前端框架之一,被广泛应用于各种Web项目中。Bo…

基于机器学习预测岗位薪资

本文根据某招聘网站抓取的岗位信息,来预测该岗位平均薪资。 数据预处理 数据示例如下: 因为本文重点介绍如何实现预测,因此对于数据的预处理部分讲解一下处理逻辑: 1、统一薪资的单位,要么统一为年薪(万/…

【Linux】序列化与反序列化{服客编程/守护进程/JSON}

文章目录 1.引入2. 静态成员函数3.TCP:传输控制协议4.守护进程4.0前台进程4.1介绍4.2认识4.3会话4.3ps axj4.4理解4.5/dev/null4.6守护进程和孤儿进程 5.JSON6.完整代码6.1Makefile6.2Socket.hpp6.3Protocol.hpp6.4Log.hpp6.5Daemon.hpp6.6TcpServer.hpp6.7Client.c…

PBXAI:将疾病预测转为沿知识图谱的随机游走

PBXAI:将疾病预测转为沿知识图谱的随机游走 PBXAI 知识图谱构建 病人特征与知识图谱连接 强化学习 疾病发展路径的生成PBXAI 流程PBXAI 算法设计 论文: https://arxiv.org/ftp/arxiv/papers/2010/2010.08300.pdf 代码:https://github.co…

NLP_知识图谱_介绍、构建、问答知识

文章目录 知识图谱的介绍图图能做些什么任务基于图的推荐系统图的一些基本概念与表述有向图与无向图节点的度节点的边的数量有向图又分为入度和出度 什么是知识图谱知识图谱属于异质图知识图谱的schema知识图谱的应用场景 知识图谱的构建三元组如何构建知识图谱构建知识图谱通常…

基于springboot+vue+Mysql的简历系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

C语言输出不同颜色的字体

本文章在Linux进行演示!!! 使用C语言输出不同颜色字体和背景 格式: printf("\033[字体背景颜色;字体颜色m字符串\033[0m"); 上边的 \033 也可以用 \e 来代替。 字体颜色与字符的对应关系 字符颜色30黑色31红…

小白学视觉 | 各种各样神奇的自注意力机制(Self-attention) 建议收藏!

本文来源公众号“小白学视觉”,仅用于学术分享,侵权删,干货满满。 原文链接:收藏!各种各样神奇的自注意力机制(Self-attention) 编者荐语 文章总结了关于李宏毅老师在 2022 年春季机器学习课…

MAC(M1芯片)编译Java项目慢且发热严重问题解决方案

目录 一、背景二、排查三、解决四、效果以及结果展示五、总结 一、背景 使用idea编译项目等操作,经常性发热严重,并且时间慢。直到昨天编译一个项目用时30分钟,电脑温度很高,并且有烧灼的味道,于是有了此篇文章。 二、…

关于Jar包提示找不到主类 找不到或无法加载主类

关于Jar包提示找不到主类 找不到或无法加载主类 当时看到教程打包一个正常的小型增删改查为50MB,也就是几十MB,可我打包得到的Jar包只有几MB,一直提示找不到主类application。经检查 根据方法,只需使用mvn clean 和 mvn packa…

大米自动化生产线设备:现代粮食加工的核心力量

随着科技的不断进步和粮食加工行业的快速发展,大米自动化生产线设备在现代粮食加工中的地位愈发重要。这些设备不仅大大提高了生产效率,还保证了产品的质量和安全,成为了现代粮食加工行业不可或缺的核心力量。 一、自动化生产线设备助力效率提…

厂房起火3D消防灭火安全救援模拟演练

深圳VR公司华锐视点依托前沿的VR虚拟现实制作、三维仿真和图形图像渲染技术,将参训者带入栩栩如生的火灾现场。佩戴VR头盔,参训者将真切体验火势蔓延的紧张与危机,身临其境地感受火灾的恐怖。 并且消防安全VR虚拟现实演练系统精心模拟了住宅、…

基于单链表实现通讯管理系统!(有完整源码!)

​ 个人主页:秋风起,再归来~ 文章专栏:C语言实战项目 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 1、前言 友友们,这篇文章是基于单链…

005Node.js模块URL的使用

引入 URL 模块 要使用 URL 模块,首先需要在代码中引入它。可以使用以下代码将 URL 模块导入到你的脚本中: const url require(url);实例代码 const urlrequire(url); var apihttp://www.baidu.com?nameshixiaobin&age20; console.log(url.parse(…

Android应用和开发环境

🌈个人主页:小新_- 🎈个人座右铭:“成功者不是从不失败的人,而是从不放弃的人!”🎈 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 🏆所属专栏&#xff1…

70 个常用的GIS Python 库

由于其多功能性、广泛的库生态系统和用户友好的语法,Python 已成为地理信息系统 (GIS) 和遥感领域的主导语言。这个 70 个地理空间 Python 库的汇编展示了可用于 GIS 和遥感数据处理和分析的丰富工具包。 Python 在 GIS 中的重要性源于它处理复杂地理空间数据的能力…

rancher踩坑日志:prometheus访问kubelet 10250端口提示鉴权失败

该原因是因为kubectl禁止了非授权用户访问10250端口来获取node的数据。 解决思路: 添加prometheus访问kubelet时带上证书进行验证匹配 --> 由于我的prometheus是rancher安装的,不知道要怎么修改所以研究了一会没研究明白就放弃了。设置prometheus访问…

运动听歌哪款耳机靠谱?精选五款热门开放式耳机

随着人们对运动健康的重视,越来越多的运动爱好者开始关注如何在运动中享受音乐。开放式蓝牙耳机凭借其独特的设计,成为了户外运动的理想选择。它不仅让你在运动时能够清晰听到周围环境的声音,保持警觉,还能让你在需要时与他人轻松…

gym界面修改

资料:https://blog.csdn.net/weixin_46178278/article/details/135962782 在gym环境中使用mujoco的时候,有一个很难受的地方,界面上没有实时显示动作空间和状态空间状态的地方。 gym自己原始带的环境是用pygame画的图,所以在定义…

【爬虫+数据清洗+可视化分析】Python文本分析《狂飙》电视剧的哔哩哔哩评论

一、背景介绍 把《狂飙》换成其他影视剧,套用代码即可得分析结论! 2023《狂飙》热播剧引发全民追剧,不仅全员演技在线,且符合主旋律,创下多个收视记录! 基于此热门事件,我用python抓取了B站上千…