移除链表元素题目讲解

一:题目

二:思路讲解 

方法一:

1:创建两个指针prev和cur,初识位置cur为head,prev为NULL,然后两个指针往后移动开始去寻找与val值吻合的节点,最后找到节点的时候,cur指向该节点,prev指向该节点的前一个节点,现在我们的目的是要删除这个cur指向的节点,让cur去指向该节点的下一个节点!

2:所以我们先将prev的next修改为该节点的下一个节点,将该节点的前后两点链接起来(prev->next = cur ->next)然后再让cur指向该节点的后一个节点(cur=prev->next )。

第一步:初始状态:

第二步:找到val值吻合的时候:

第三步: 先将prev的next修改为该节点的下一个节点,将该节点的前后两点链接起来(prev->next = cur ->next)

第四步: 然后再让cur指向该节点的后一个节点(cur=prev->next )。

这样就成功的删除了一个与val值吻合节点。

如果你疑问为什么不直接cur=cur->next,也就是直接让cur指向了该节点的下一个节点,那是因为我们需要释放掉该节点。而该节点是cur指向的,我们free(cur)的这一步,是放在第三步和第四步之间,free(cur)不会产生任何影响,如果直接cur=cur->next,那不管是在这一步之前还是之后free(cur),都会对cur产生影响,从而导致答案错误。

特殊情况:第一个或者前几个一直val值都吻合

第一步:初始状态:

这种情况,我们对prev的操作,会变成对空指针的解引用,这是错误的!

解决方法:寻找一个新的头,也就是让上面的链表变成下面:

这样又可以按照之前的方法做下去了。

代码展示:

由图可知: 判断特殊情况的if有两种写法,皆可。

方法二:

遍历原链表,把不是val的节点尾插到新链表。

1:首先需要一个cur初始为head,一个newhead(NULL),一个tail(NULL)来保存节点去进行尾插,这两个一开始都是NULL,因为可能链表是一个空链表,这样直接返回newhead就好
 

第一步:发现val值吻合的节点

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

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

相关文章

基于springboot实现体育馆管理系统项目【项目源码+论文说明】

基于springboot实现体育馆管理系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理…

fiori SAP ui5 动态改变控件颜色

使用CustomData动态改变控件颜色 有时候我们需要改变控件颜色,对于高度封装的控件,显然改变控件CSS是比较困难的,幸好SAP UI5预设了一个customData的属性,每个控件都能使用她。 如下代码是判断汇率是否有改变,如果改…

delphi6直连redis服务(用lua脚本redis模块)

一、创建一个exe程序 创建一个exe程序,引用LuaRedis.pas单元(此单元自己封装的代码,目前主要封装了获取key和设置key/value功能),代码如下: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;type…

Watchdog,一双专为 Python 而生的守护者之眼

大家好!我是爱摸鱼的小鸿,关注我,收看每期的编程干货。 一个简单的库,也许能够开启我们的智慧之门, 一个普通的方法,也许能在危急时刻挽救我们于水深火热, 一个新颖的思维方式,也许能…

自动驾驶 | 仿真测试-HiL测试全解析

1.HiL 的定义 HiL(Hardware-in-the-Loop)硬件在环是计算机专业术语,也即是硬件在回路。通过使用 “硬件在环”(HiL) ,可以显著降低开发时间和成本。在过去,开发电气机械元件或系统时,使用计算机仿真和实际的实验就已经…

【Linux】基础知识

常识 Linux命令行操作效率远大于图形界面,so… Linux终端打开时,默认以用户的home目录为当前工作目录 命令形式:command [-options] [parameter]; 多个参数同时使用时: ls -l -a; ls -la; ls -al; 多个参数同时使用三…

runc 文件描述符泄漏导致容器逃逸漏洞(CVE-2024-21626)

阿里云安全公告 阿里云产品关于 runc的安全问题(CVE-2024-21626)影响声明 升级 runc 升级runc版本号 > 1.1.12 查看runc 当前版本号 root####:~# runc --version runc version 1.1.9 commit: v1.1.9-0-gccaecfc spec: 1.0.2-dev go: go1.20.8 li…

antd vue pro (vue 2.x) 多页签详细操作

antd vue pro 多页签配置操作,具体操作如下。 1.引入 tagviews文件 在 store/modules 中创建 tagviews.js ,复制一下代码到文件中保存 const state {visitedViews: [],cachedViews: [] }const mutations {ADD_VISITED_VIEW: (state, view) > {if …

Element-ui-vue3-前端界面开发-配置-编辑main.js-nodejs基础语法-vue3-html模板语法-vue文件编译

前端配置 1.下载nodejs 18 lts2.配置nodejs和安装vue3.vue调试技巧3.1.debugger3.2.vue devtools4.编辑main.js5.nodejs基础语法5.1.import5.1.1.导入单个模块或组件5.1.2.导入整个模块或库5.1.3.导入默认导出5.1.4.导入 css文件5.1.5.导入模块和组件5.2.export5.2.1.命名导出5…

数学建模资料|历年数维杯数学建模竞赛真题及获奖论文汇总

2024年第九届数维杯大学生数学建模挑战赛:2024年5月10日08:00-5月13日09:00举行,为了更好的帮助参赛同学了解竞赛的赛制及赛题特点,数乐君今天给大家整理了历年数维杯国赛真题及优秀论文,方便同学们赛前巩固训练,掌握解题方法,提高获奖率。 2023年数维杯国赛真题(ABC题…

Ponder-C++反射库入门

Ponder-C反射库入门 前言CMakeVS2022构建Demo环境搭建 前言 Ponder:Expose C classes and objects so they can used as data. Serialisation and Lua scripting supported 公开C类和对象,以便他们用作数据。且支持徐丽华和Lua脚本绑定。 github地址&am…

如何在没有备份的情况下恢复 Mac 上丢失的数据

如果您因意外删除、错误格式化硬盘或文件损坏而丢失了重要的、感伤的文件、照片或音乐,那么这可能会令人非常痛苦。幸运的是,您有几个选择。 您的 Mac 位于数字宇宙的中心。您可能会在上面留下照片和视频形式的记忆,以及来自您不再见面的朋友…

Java使用JSch实现SSH远程执行命令

前言 有一个奇怪的需求,就是将本地的内容直接提交到远程服务器,并且需要针对文件夹进行处理。所以,这里就直接采用JSch来实现。在这里,感谢秀发浓密的程序猿的这篇博客,给了很大启发。 思路 既然是直接读取文件夹&am…

前端如何设置div可滚动,且设置滚动条颜色

在前端中,设置 div 为可滚动并通过 CSS 自定义滚动条的颜色并不是所有浏览器都直接支持的功能,因为滚动条的样式在很大程度上取决于操作系统和浏览器的默认样式。然而,你可以使用某些 CSS 属性来尝试自定义滚动条的外观,这些属性在…

C语言 | Leetcode C语言题解之第75题颜色分类

题目&#xff1a; 题解&#xff1a; void swap(int *a, int *b) {int t *a;*a *b, *b t; }void sortColors(int *nums, int numsSize) {int p0 0, p2 numsSize - 1;for (int i 0; i < p2; i) {while (i < p2 && nums[i] 2) {swap(&nums[i], &num…

Linux系统 -- 创建systemd服务单元 Python 程序在系统启动时自动启动,并持续运行。

1. 创建一个名为 model_ai.service 的文件&#xff0c;并将其放置在 /etc/systemd/system/ 目录中。 2. 命令创建和编辑文件 sudo vim /etc/systemd/system/model_ai.service 3. 在打开的编辑器中&#xff0c;添加以下内容&#xff1a; [Unit] DescriptionModel AI Python S…

【C/C++基础】Lambda 表达式

文章目录 介绍 lambda谓词lambda 表达式的形式 向 lambda 传递参数使用捕获列表值捕获引用捕获隐式捕获 指定 lambda 返回类型返回 void 类型使用尾置返回类型 介绍 lambda 我们在自定义排序中经常看到如下代码&#xff1a; sort(nums.begin(), nums.end(), [](const int&…

10 种超赞的 MyBatis 写法,同事都说好用!

MyBatis 虽说给我们的开发带来了很多的便捷&#xff0c;但有些地方写起来依旧比较的麻烦&#xff0c;比如配置XML的时候&#xff0c;但是一个好的写法&#xff0c;不仅能为我们节省不少时间、还能能降低出错的概率&#xff0c;下面就给大家分享一些优质的写法&#xff1a; 1用…

数据结构(一)初识数据结构

数据结构&#xff08;一&#xff09;初识数据结构 要点&#xff1a;解决问题的效率与数据的组织方式有关 思考&#xff1a;如何考虑数据结构 01 如何考虑数据结构 参考&#xff1a;从数据如何插入和如何取出两个角度考虑数据存储结构 在此基础上&#xff0c;考虑数据的空间…

Hive操作运算符

关系操作符 以下操作符比较操作数(operands)从而产生TRUE/FALSE值.运算符操作数描述A B所有基本类型如果表达A等于表达B,结果TRUE,否则FALSE.A ! B所有基本类型如果A不等于表达式B表达返回TRUE,否则FALSE.如果有值为NULL&#xff0c;不会返回结果A < B所有基本类型TRUE,如…