当前位置: 首页 > news >正文

力扣203:移除链表元素

力扣203:移除链表元素

题目描述:

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

在这里插入图片描述

示例 1:

输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]

示例 2:

输入:head = [], val = 1
输出:[]

示例 3:

输入:head = [7,7,7,7], val = 7
输出:[]

提示:

列表中的节点数目在范围 [0, 104] 内
1 <= Node.val <= 50
0 <= val <= 50

分析:

移除链表中和val值相同的元素

定义两个指针,当前指针cur,和当前指针之前的指针pre

当前指针cur指向头节点,当前指针的前驱pre指向NULL

在这里插入图片描述

遍历链表:

  • 当链表中当前元素ur->val!=val时,可以继续往下遍历,pre=curcur=cur->next

在这里插入图片描述

  • 当链表中当前元素ur->val=val时,就需要删除当前指针所指的节点,即通过pre来完成,让pre的指针域指向当前节点cur的下一个节点,pre->next=cur->next。如果当pre为空时,就类似于头删。

在这里插入图片描述

代码:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode* removeElements(struct ListNode* head, int val) {struct ListNode*cur=head;struct ListNode*pre=NULL;while(cur){if(cur->val!=val){pre=cur;cur=cur->next;}else{if(pre==NULL){head=cur->next;free(cur);cur=head;}else{pre->next=cur->next;cur=cur->next;}}}return head;
}
http://www.lryc.cn/news/230917.html

相关文章:

  • Moto edge s pro手机 WIFI和蓝牙连接不上 解决方法分享
  • 两万字图文详解!InnoDB锁专题!
  • 2023湖南省赛
  • AISchedule(3):基础生成表格
  • OpenAI 上线新功能力捧 RAG,开发者真的不需要向量数据库了?
  • PyCharm鼠标控制字体缩放
  • NI USRP RIO软件无线电
  • kicad源代码研究:symbol properties窗口中为SCH_SYMBOL添加或删除一个sch_field
  • httpClient超时时间详解与测试案例
  • 后端接口性能优化分析-数据库优化
  • 都很忙,哪里寻找时间?
  • 【经验记录】Ubuntu系统安装xxxxx.tar.gz报错ImportError: No module named setuptools
  • SDL2 消息循环和事件响应
  • 技巧篇:Mac 环境PyCharm 配置 python Anaconda
  • matplotlib绘图
  • QT使用Socket与安卓Socket互发消息
  • Redis05-集群方案
  • 故障演练的关键要素及重要性
  • 11月15日,每日信息差
  • java-关于alibaba的JSON.parseArray注意事项
  • 软文推广中媒体矩阵的优势在哪儿
  • xss总结
  • 【MySQL学习】常见命令
  • 汽车ECU的虚拟化技术初探(二)
  • vue3 el-menu初始化时选中没有高亮的问题(default-active和index的问题)
  • Vue的class、style绑定
  • day22_mysql
  • 【VBA】基于EXCEL生成Insert语句工具
  • 算法与数据结构--前缀和
  • 高频CSS面试题