【力扣】-- 移除链表元素

news2024/11/28 4:43:29

🌈 个人主页:白子寰
🔥 分类专栏:python从入门到精通,魔法指针,进阶C++,C语言,C语言题集,C语言实现游戏👈 希望得到您的订阅和支持~
💡 坚持创作博文(平均质量分82+),分享更多关于深度学习、C/C++,python领域的优质内容!(希望得到您的关注~)  

目录

题目要求

示例

解法一:双指针 

思路

图解

①pcur = val且是phead=val 

②链表中元素 != val 

③(除首元素之外的元素)其他元素=val 

代码 

 解法二:尾插不是val的元素到新链表

思路

图解

代码


 

【力扣】-- 移除链表元素

移除链表元素icon-default.png?t=N7T8https://leetcode.cn/problems/remove-linked-list-elements/

题目要求

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

示例

 


 

解法一:双指针 

思路

创建两个指针 pcur 和 prev , pcur=head, prev为空指针,使用while语句 pcur 遍历链表,有以下三种情况👇,最后返回新的节点head

图解

①pcur = val且是phead=val 

②链表中元素 != val 

 

③(除首元素之外的元素)其他元素=val 

 

代码 

typedef struct ListNode LTNode;
struct ListNode* removeElements(struct ListNode* head, int val) 
{
    LTNode* prev = NULL,*pcur = head;
    while(pcur)
    {
        //首元素=val
        if(pcur->val == val)
        {
          if(pcur == head)
          {
            head = pcur->next;
            free(pcur);
            pcur = head;
          }
          //其他元素=val
          else
          {
            prev->next =pcur->next;
            free(pcur);
            pcur = prev->next;
          }
        }
        //链表元素 != val
        else
        {
            prev = pcur;
            pcur = pcur->next;
        }
    }
    return head;
}

 

 解法二:尾插不是val的元素到新链表

思路

新创建两个指针 newhead 和 newtail, 并初始化为NULL;

在while循环下用pcur遍历原链表

在pcur->val!=val的情况下

        ①newhead != NULL

        ②newhead==NULL

如下图👇

最后结尾newtail的下一个节点置为空

图解

代码

typedef struct ListNode LTNode;
struct ListNode* removeElements(struct ListNode* head, int val) {
    LTNode* newhead,*newtail;
    newhead = newtail = NULL;
    LTNode* pcur = head;
    while(pcur)
    {
        if(pcur->val != val)
        {
            if(newhead == NULL)
            {
                newhead = newtail = pcur;
            }
            else
            {
                newtail->next = pcur;
                newtail = newtail->next; 
            }
        }
        pcur = pcur->next;
    }
    if(newtail)
    {
        newtail->next = NULL;
    }
    return newhead;
}

 

***********************************************************分割线*****************************************************************************
完结!!!
感谢浏览和阅读。

等等等等一下,分享最近喜欢的一句话:

“保持热爱,奔赴下一场山海”。

我是白子寰,如果你喜欢我的作品,不妨你留个点赞+关注让我知道你曾来过。
你的点赞和关注是我持续写作的动力!!! 
好了划走吧。

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

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

相关文章

Github 2024-04-11 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-04-11统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目4Python项目3JavaScript项目1Cuda项目1Jupyter Notebook项目1非开发语言项目1Dify.AI: 开源的LLM应用程序开发平台 创建周期:29…

C语言 | Leetcode C语言题解之第21题合并两个有序链表

题目: 题解: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode; struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {/…

基于Vue的宠物领养系统的设计与实现(论文+源码)_kaic

目 录 摘 要 ABSTRACT 1 引言 1.1 课题背景 1.2 设计原则 1.3 论文组织结构 2 系统关键技术 2.1 JSP技术 2.2 JAVA技术 2.3 B/S结构 2.4 MYSQL数据库 3 系统分析 3.1 可行性分析 3.1.1 操作可行性 3.1.2 经济可行性 3.1.3 技术可行性 3.1.4 法律可行性 3.2 系统功能分析 3.3…

SpringClout 引用 xxjob定时任务

SpringClout 引用 xxjob定时任务 下载源码组成部分调度中心使用步骤修改调度中心配置配置解释启动验证 执行器使用步骤修改执行器配置执行器组件配置启动创建定时任务创建任务代码 [附加已有项目调用xxjob API](https://blog.csdn.net/fannan521/article/details/132707242) 下…

PDF文件内容可以转成word版本吗?答案是肯定的 PDF转word的方法

一,PDF转Word的必要性 随着信息技术的飞速发展,文档的格式和转换成为了我们日常生活和工作中不可避免的一部分。其中,PDF转Word的需求尤为突出。PDF作为一种跨平台的文档格式,具有阅读效果好、不易被篡改等优点,但在编…

hcia datacom课程学习(6):路由与路由表基础

1.路由的作用 不同网段的设备互相通信需要具有路由功能的设备进行转发 具有路由功能的设备不一定是路由器,交换机可以有路由功能,同样的,路由器也可以有交换功能,像家里常用的路由器就是集路由功能和交换功能于一体的 2.路由相…

响应式wordpress自媒体资讯文章新闻博客图片自适应PC模板源码html5博客文章模板源码

响应式wordpress自媒体资讯文章新闻博客图片自适应PC模板源码html5博客文章模板源码利于SEO优化 wordpress内核开发的自媒体资讯文章新闻博客网站模板 PCWAP端同一个后台,数据即时同步,简单适用! 源码是wordpress开发的官网系统 后台非常简单…

python爬虫----BeautifulSoup(第二十天)

🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…

开源监控zabbix对接可视化工具grafana教程

今天要给大家介绍的是开源监控工具zabbix对接可视化工具grafana问题。 有一定运维经验的小伙伴大抵都或多或少使用过、至少也听说过开源监控工具zabbix,更进一步的小伙伴可能知道zabbix在数据呈现方面有着明显的短板,因此需要搭配使用第三方的可视化工具…

全新华为MateBook X Pro发布,将Ultra9放入980g超轻薄机身

2024年4月11日,在华为鸿蒙生态春季沟通会上全新的华为MateBook X Pro正式发布。该机以美学设计、创新科技以及智慧体验,追求重新定义Pro、重新定义旗舰,将颠覆消费者对传统轻薄本的认知。 华为MateBook X Pro追求极致轻薄与强大性能的完美结合…

python-使用bottle时间简易服务器

python-使用bottle时间简易服务器 调试读取文本所有内容字段解析json字符串解析追加写入文件 整理后整理后写入文件方法将目录下所有文本的内容批量追加到一个文本搜索字符串方法实现简易服务器通过浏览器访问 调试 读取文本所有内容 fopen("./howtousercbow/data/other…

pytorch实现胶囊网络(capsulenet)

胶囊网络在hinton刚提出来的时候小热过一段时间,之后热度并没有维持多久。vision transformer之后基本少有人问津了。不过这个模型思路挺独特的,值得研究一下。 这个模型的提出是为了解决CNN模型学习到的特征之间没有空间上的关系,从而对于各…

python毕业设计django游泳馆管理系统-flask

游泳馆管理系统具有信息管理功能的选择。游泳馆管理系统采用python技术,基于mysql开发,实现了首页,教练信息,培训信息,交流版块,活动公告,个人中心,后台管理等内容进行管理&#xff…

怎样将PDF转成PPT,有免费的工具吗?

PDF转换为PPT的需求在现代办公和学习中越来越常见。很多人可能遇到过需要将PDF文件中的内容转移到PPT中以方便编辑和展示的情况。幸运的是,现在市面上有许多工具可以帮助我们实现这一目标,而且其中不乏一些免费的选项。本文将详细介绍如何使用这些免费工…

Python 批量检测ip地址连通性,以json格式显示(支持传参单IP或者网段)

代码 ########################################################################## File Name: check_ip_test.py# Author: eight# Mail: 18847097110163.com # Created Time: Thu 11 Apr 2024 08:52:45 AM CST################################################…

小程序中配置scss

找到:project.config.json 文件 setting 模块下添加: "useCompilerPlugins": ["sass","其他的样式类型"] 配置完成后,重启开发工具,并新建文件 结果:

使用hexo+gitee从零搭建个人博客

一、环境准备 1.Node.js:下载 | Node.js 中文网 (nodejs.cn) ,Hexo 是基于Node.js 的博客框架 教程:https://blog.csdn.net/weixin_52799373/article/details/123840137 node -v npm -v 安装 Node.js 淘宝镜像加速器 (cnpm&am…

JS-28-AJAX

一、AJAX的定义 AJAX不是JavaScript的规范,它只是一个哥们“发明”的缩写:Asynchronous JavaScript and XML,意思就是用JavaScript执行异步网络请求。 如果仔细观察一个Form的提交,你就会发现,一旦用户点击“Submit”…

【JavaEE初阶系列】——网络编程 UDP客户端/服务器 程序实现

目录 🚩UDP和TCP之间的区别 🎈TCP是有连接的 UDP是无连接的 🎈TCP是可靠传输 UDP是不可靠传输 🎈TCP是面向字节流 UDP是面向数据报 🎈TCP和UDP是全双工 👩🏻‍💻UDP的socket ap…

【muzzik 分享】3D模型平面切割

# 前言 一年一度的征稿到了,倒腾点存货,3D平面切割通常用于一些解压游戏里,例如水果忍者,切菜这些,今天我就给大家讲讲怎么实现3D切割以及其原理,帮助大家更理解3D中的 Mesh(网格),以及UV贴图和…