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

C++面试(5)-----删除链表中指定值的节点

  • 操作系统:ubuntu22.04
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

给定一个单向链表的头节点 head 和一个特定值 val,要求编写一个函数来删除链表中所有值等于 val 的节点,并返回修改后的链表头节点。
示例:

输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5

解决方案

#include <iostream>struct ListNode
{int val;ListNode *next;ListNode(int x):val(x), next(nullptr){}
};void removeElements(ListNode* head, int val)
{while (head != nullptr && head->val == val){ListNode *tmp = head;head = head->next;delete tmp;}if(head ==nullptr){return;}ListNode *Cur = head;while(Cur->next != nullptr){if(Cur->next->val == val){ListNode* tmp = Cur->next;Cur->next = Cur->next->next;delete tmp;} else{Cur = Cur->next;}  }
}void printList(ListNode *head)
{while(head != nullptr){std::cout << head->val;head = head->next;} 
}
int main()
{ListNode *head = new ListNode(1);head->next = new ListNode(2);head->next->next = new ListNode(3);head->next->next->next = new ListNode(4);head->next->next->next->next = new ListNode(5);head->next->next->next->next->next = new ListNode(6);removeElements(head, 6);printList(head);
}

运行结果

12345

注意事项

  • 处理头节点:首先检查并处理头节点是否为要删除的目标值,因为头节点没有前驱节点。
  • 遍历链表:对于每个节点,检查其下一个节点的值是否为目标值。如果是,则跳过该节点(即改变当前节点的 next 指针指向下一个节点的下一个节点)。
  • 内存管理:每次删除节点时,记得释放被删除节点占用的内存,避免内存泄漏。
http://www.xdnf.cn/news/13604.html

相关文章:

  • Python从入门到荒废-无网络Linux系统安装matplotlib
  • 电路板的 “双面绣”:猎板双色油墨如何重塑电子制造新范式
  • 人工智能AI
  • Unity3D Mono与IL2CPP区别详解
  • 关于主流电商官方API接口采集有哪些优势?
  • jpeg与 Mjpeg数据格式有什么区别
  • 大模型笔记_模型微调
  • Maven 之 打包项目时没有使用本地仓库依赖问题
  • 企业如何高效构建BI团队,解锁数据价值新高地?
  • 摩擦非线性随动电机位置误差控制系统
  • C# OAuth2密码模式接口鉴权
  • 前端面试题之将自定义数据结构转化成DOM元素
  • 面壁智能MiniCPM4.0技术架构与应用场景
  • 雷卯针对易百纳G16DV5-IPC-38E型主控板防雷防静电方案
  • Sentinel介绍
  • java大文件分段下载
  • (ML-Agents) 是一个开源项目,它使游戏和模拟能够作为使用深度强化学习和模仿学习训练智能代理的环境
  • Java SE - 类和对象入门指南
  • MCP 协议系列序言篇:开启 AI 应用融合新时代的钥匙
  • 爬取汽车之家评论并利用NLP进行关键词提取
  • 2025.6.11总结
  • RuoYi 前后端分离项目 Linux 部署全指南
  • 第四章无线通信网
  • 安卓15开机启动Fallbackhome去除--成果展示
  • 看板中如何管理技术债务
  • 智慧厕所系统:革新公共卫生设施的新势力
  • 以 OCP 认证培训为翼,翱翔数据库广阔天空
  • 基础篇:5. HTTP/2 协议深度解析
  • 青藏高原地区多源融合降水数据(1998-2017)
  • C#使用MindFusion.Diagramming框架绘制流程图(3):加权图的最短路径算法