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

单链表经典算法LeetCode--203.移除链表元素(两种方法解)

1.链接:. - 力扣(LeetCode)【点击即可跳转】

分析此题提供两种思路:

1.遍历原链表,将值为val的节点释放掉(双指针法)

 定义一个pcur指针指向头节点,定义一个prev指针指向NULL

需要注意:链表中有连续的val头节点就是val 的情况。

代码实现为:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode* removeElements(struct ListNode* head, int val)
{struct ListNode* prev, *pcur;prev = NULL;pcur = head;while (pcur) //pcur为空时,跳出循环{if (pcur->val != val) {prev = pcur; pcur = pcur->next; }else{ // 当pcur等于valstruct ListNode* pcurHead = pcur->next;            if (prev == NULL) // 头节点就为val的情况{ free(pcur); head = pcurHead; // 更新头节点pcur = pcurHead; // 然后把新的头节点的地址赋给pcur}else {   free(pcur); // 释放val元素prev->next = pcurHead; // pcurHead存的是pcur的next,所以直接赋给prev的nextpcur = pcurHead; // 然后让pcur指向下一个节点的地址}}}return head;
}

2.找值不为val的节点,尾插到新链表中

创建新链表,定义newTail指针进行尾插,定义pcur指针进行遍历

需要注意:在跳出循环后,将newTail指向下一个节点的指针置为空。

struct ListNode* removeElements(struct ListNode* head, int val)
{//创建一个空链表struct ListNode* newHead, * newTail;newHead = newTail = NULL;//遍历原链表struct ListNode* pcur = head;while (pcur){//找值不为val的节点,尾插到新链表中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.lryc.cn/news/348013.html

相关文章:

  • MySQL—子查询
  • ffmpeg 读取流报错: Non-monotonous DTS in output stream
  • yo!这里是socket网络编程相关介绍
  • polars学习-03 数据类型转换
  • IDC 权威认可!Aloudata 入选金融领域中数据管理分析服务最佳实践案例
  • RSA与AES算法比较及应用场景推荐
  • 揭秘 HTTP 代理:增强在线活动的安全性和匿名性
  • 【经验】mysql冷热数据分离
  • 【机器学习-06】Scikit-Learn机器学习工具包进阶指南:机器学习分类模型实战与数据可视化分析
  • 蓝桥杯国赛每日一题:日志统计(双指针)
  • 佛山MES公司(盈致mes系统服务商)助力企业实现智能制造
  • 算法设计课第五周(贪心法实现活动选择问题)
  • Ubuntu20.04右键打不开终端
  • XML元素
  • 融入新科技的SLM27211系列 120V, 3A/4.5A高低边高频门极驱动器兼容UCC27284,MAX15013A
  • 代码随想录算法训练营Day 38| 动态规划part01 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
  • CSS拟物按钮
  • websevere服务器从零搭建到上线(三)|IO多路复用小总结和服务器的基础框架
  • 解决宝塔Nginx和phpMyAdmin配置端口冲突问题
  • 光伏EPC管理软件都有哪些功能和作用?
  • BGP学习一:关于对等体建立和状态组改变
  • ETL工具kettle(PDI)入门教程,Transform,Mysql->Mysql,Csv->Excel
  • 常见地图坐标系间的转换算法JavaScript实现
  • 基于python的大麦网自动抢票工具的设计与实现
  • 2024年5月树莓集团快讯
  • 网站localhost和127.0.0.1可以访问,本地ip不可访问解决方案
  • Docker Dockerfile如何编写?
  • Python数独游戏
  • 24 | MySQL是怎么保证主备一致的?
  • 2.数据类型与变量(java篇)