117.移除链表元素(力扣)

题目描述

代码解决

class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        //删除头节点
        while(head!=NULL&&head->val==val){
            ListNode*tmp=head;
            head=head->next;
            delete tmp;
        }
        //删除非头节点
        ListNode*cur=head;
        while(cur!=NULL&&cur->next!=NULL){
            if(cur->next->val==val)
            {
                ListNode*tmp=cur->next;
                cur->next=cur->next->next;
                delete tmp;
            }
            else
            {
                cur=cur->next;
            }
        }
        return head;
    }
};

代码思路 

这段 C++ 代码定义了一个名为 Solution 的类,其中包含一个名为 removeElements 的成员函数,用于从单链表中删除指定值的所有节点。以下是代码的主要逻辑:

  1. removeElements 函数接受两个参数:指向链表头部的指针 ListNode* head 和要删除的整数值 int val。函数在删除元素后返回修改后链表的头指针。

  2. 函数首先检查头节点是否与要删除的值匹配。如果匹配,则迭代删除头节点,直到头节点的值不再匹配指定的值。

  3. 处理完头节点后,函数遍历剩余的链表部分。如果遇到节点的值与指定的值匹配,则通过调整指针来删除该节点。否则,移动到下一个节点。

  4. 最后,函数返回修改后的链表的头指针。

以下是代码各部分的简要说明:

  • 在删除头节点的循环中,函数检查头节点是否存在(head != NULL),并且其值是否与指定的值匹配(head->val == val)。在循环内部,将 head 赋值为下一个节点,并删除先前的头节点。

  • 在删除非头节点的循环中,函数遍历链表(cur != NULL && cur->next != NULL)。如果下一个节点的值与指定的值匹配,则调整指针以跳过该节点并删除它。否则,移动到下一个节点。

  • 最后,函数返回修改后的头指针。

此代码有效地从链表中删除所有指定值的节点,并返回修改后的链表。但是,请确保 ListNode 类在代码的其他部分正确定义和初始化,以使此实现正常工作。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【python】python用户管理系统[简易版](源码+报告)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

End-to-End Weakly-Supervised SemanticSegmentation with Transformers

摘要 弱监督语义分割(WSSS)使用图像级标签是一项重要且具有挑战性的任务。由于高训练效率,端到端的WSSS解决方案受到社区越来越多的关注。然而,当前的方法主要基于卷积神经网络,并未正确地探索全局信息,因…

SwiftUI 在 App 中弹出全局消息横幅(下)

功能需求 在 SwiftUI 开发的 App 界面中,有时我们需要在全局层面向用户展示一些消息: 如上图所示:我们弹出的全局消息横幅位于所有视图之上,这意味这它不会被任何东西所遮挡;而且用户可以点击该横幅关闭它。这是怎么做到的呢? 在本篇博文中,您将学到以下内容 功能需求…

靶机渗透之Misdirection

Name: Misdirection: 1Date release: 24 Sep 2019Author: FalconSpySeries: MisdirectionDownload (Mirror): https://download.vulnhub.com/misdirection/Misdirection.zip 对于vulnhub中的靶机,我们都需先下载镜像,然后导入VM,并将网络连接…

简要讲解OV7725摄像头

本文主要包含以下几部分内容: 1. 通过OV7725分析模块原理图。 2. 讲解部分寄存器的含义、RGB565格式图像输出时序、帧率计算。 3. 讲解SCCB协议与I2C协议的区别。 1、OV7725功能 OV7725是一款1/4英寸单芯片图像传感器,其感光阵列达到640*480&#xff0c…

【Python】Python教师/学生信息管理系统 [简易版] (源码)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

抓 https 报文新方案 -Magisk+LSPosed,来试试吧

【面试突击班】1. 性能测试主要关注哪些指标? 关于如何抓取Android端https报文,在之前一篇文章中有介绍可以通过VitualXposedJustTrustMe模块禁用SSL验证,这样可以抓取到https,还是有一些同学反馈以下的一些问题: App…

2023年12月CCF-GESP编程能力等级认证Scratch图形化编程三级真题解析

本文收录于专栏《Scratch等级认证CCF-GESP真题解析》,专栏总目录・点这里 一、单选题(共15题,共30分) 第1题 现代计算机是指电子计算机,它所基于的是( )体系结构。 A:艾伦图灵 B:冯诺依曼 C:阿塔纳索夫 D:埃克特-莫克利 答案:B 第2题 默认小猫角色,执行下列程…

React-子传父

1.概念 说明&#xff1a;React中子组件向父组件传递数据通常涉及回调函数和状态提升等方法。 2.代码实现 2.1绑定事件 说明&#xff1a;父组件绑定自定义事件 <Son onGetSonMsg{getMsg}></Son> 2.2接受事件 说明&#xff1a;子组件接受父组件的自定义事件名称…

day46_Servlet

今日内容 0 复习昨日 1 Servlet基础 1.1 Servlet介绍 1.2 第一个Servlet 1.3 流程分析 1.4 使用细节 1.5 映射细节 1.6 生命周期 2 HttpServlet 2.1 HTTP请求、响应、状态码 2.2 GET和POST的区别 2.3 HttpServlet 0 复习昨日 1 maven创建-java项目结构 2 maven创建-javaweb项目…

自测-5 Shuffling Machine(python版本)

文章预览&#xff1a; 题目翻译算法python代码oj反馈结果 题目 翻译 shuffle是用于随机化一副扑克牌的过程。由于标准的洗牌技术被认为是薄弱的&#xff0c;并且为了避免员工通过不适当的洗牌与赌徒合作的“内部工作”&#xff0c;许多赌场使用了自动洗牌机。你的任务是模拟一…

GIN与Echo:选择正确Go框架的指南

您是否在Go中构建Web应用&#xff1f;选择正确的框架至关重要&#xff01;GIN和Echo是两个热门选择&#xff0c;每个都有其优势和特点。本指南将详细介绍每个框架的特性、速度、社区热度以及它们各自擅长的项目类型。最后&#xff0c;您将能够为您的下一个Web项目选择完美的框架…

CodeFlying 和 aixcoder两大免费软开平台,孰强孰弱?

今天为大家带来码上飞CodeFlying和aixcoder两款免费的软件开发平台效果的测评 一、产品介绍 首先简单介绍一下这两个平台 码上飞CodeFlying&#xff1a;码上飞 CodeFlying | AI 智能软件开发平台&#xff01; 是一款革命性的软件开发平台&#xff0c;它通过将软件工程和大模…

【LangChain学习之旅】—(11) 记忆:通过Memory记住用户上次的对话细节

【LangChain学习之旅】—&#xff08;11&#xff09; 记忆&#xff1a;通过Memory记住客户上次买花时的对话细节 使用 ConversationChain使用 ConversationBufferMemory使用 ConversationBufferWindowMemory使用 ConversationSummaryMemory使用 ConversationSummaryBufferMemor…

一文讲明白Java中线程与进程、并发与与并行、同步与异步

写在开头 ok&#xff0c;everybody&#xff0c;在过去的两周内&#xff0c;我们大体上讲完了Java的集合&#xff0c;在最后我们探讨了关于HashMap线程不安全的原因&#xff0c;又提出了ConcurrentHashMap这个线程安全的集合解决方案&#xff0c;那么在接下来的2-3周内&#xf…

苹果电脑清理qq的缓存 苹果电脑删除qq聊天记录 qq垃圾怎么清理最干净 卸载器 CleanMyMac x值不值得买 电脑缓存怎么清理干净

苹果电脑是很多人的首选&#xff0c;它的性能优异&#xff0c;设计精美&#xff0c;操作简洁。但是&#xff0c;如果你经常使用qq这款软件&#xff0c;你可能会发现你的苹果电脑越来越卡顿&#xff0c;存储空间越来越少&#xff0c;甚至出现一些奇怪的问题。这是因为qq会产生大…

webstorm 创建运行纯Typescript项目

创建一个空项目&#xff0c;在项目根目录创建一个tsconfig.json文件自动配置&#xff1a; 打开终端输入tsc --init&#xff0c;即可自动生成tsconfig.json文件手动配置&#xff1a; 在项目根目录下新建一个tsconfig.json文件,并配置如下内容 具体配置可以直接使用下面的配置&am…

MyBatisPlus入门教程

MyBatisPlus MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window) 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 官网地址&#xff1a;https://baomidou.com/ 一、入门案…

【C++】类与对象(static、explicit、友元、隐式类型转换、内部类、匿名对象)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;http://t.csdnimg.cn/eCa5z 目录 再谈构造函数 初始化列表 隐式类型转换 explicit关键字 static成员 概念 计算程序中创建出了多少个类…

Vscode连接外部虚拟环境

如果vscode工程目录里面有一个超级大的虚拟环境文件夹&#xff0c;怎么说都不是一件优雅的事&#xff0c;因此我们希望这个虚拟环境在工程目录外部&#xff0c;我们开始&#xff1a; 1. 复制虚拟环境目录路径&#xff1a;E:\envs\test 2. 在vscode中打开文件夹&#xff0c;CT…