剑指offer(C++)-JZ18:删除链表的节点(数据结构-链表)
作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
题目描述:
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。
1.此题对比原题有改动
2.题目保证链表中节点的值互不相同
3.该题只会输出返回的链表和结果做对比,所以若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点
数据范围:
0<=链表节点值<=10000
0<=链表长度<=10000
示例:
输入:
{2,5,1,9},5
返回值:
{2,1,9}
说明:
给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 2 -> 1 -> 9
解题思路:
本题考察数据结构链表的使用。首先判断下head是不是要删除的,如果头部被删,就返回头的next;之后遍历,cur是当前结点,pre是上一个结点,如果cur的值与val一致了,就用pre连接到cur的next结点即可,相当于越过了要删除的结点,实现删除。
测试代码:
/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) : val(x), next(nullptr) {}* };*/
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param head ListNode类 * @param val int整型 * @return ListNode类*/ListNode* deleteNode(ListNode* head, int val) {ListNode* cur=head;ListNode* pre=head;// 判断下第一个是不是if(head->val==val)return head->next;cur=cur->next;// 如果找到要删除的结点,就将pre连接到cur的下一个即可,起到了删除作用while(cur){if(cur->val==val){pre->next=cur->next;return head;}cur=cur->next;pre=pre->next;}return head;}
};
剑指offer(C++)-JZ18:删除链表的节点(数据结构-链表)相关推荐
- 《剑指offer》第二章小结(1)——链表的基本操作
<剑指offer>第二章小结(1)--链表的基本操作 面试题5是从尾到头打印链表,与此相关的链表的基本操作应该知道. 下面代码中列举了单链表的创建.遍历.插入和删除四种操作.参考网址: h ...
- 剑指Offer - 九度1511 - 从尾到头打印链表
剑指Offer - 九度1511 - 从尾到头打印链表2013-11-29 21:08 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例. 每一组测试案 ...
- 剑指offer java版 test3—从尾到头打印链表
标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...
- 剑指offer面试题[5]-从尾到头打印链表
目描述 输入一个链表,从尾到头打印链表每个节点的值. /** * struct ListNode { * int val; * struct ListNode *next ...
- 剑指offer(C++)-JZ6:从尾到头打印链表(数据结构-链表)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回). 如输入{ ...
- 剑指offer 附加1. 删除链表中的重复结点
1.问题描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处 ...
- 剑指offer 66题 -- 删除链表中重复的节点
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; */ ...
- [剑指offer][JAVA]面试题第[24]题[反转链表][递归][双指针][头插法]
[问题描述][中等] 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点.示例:输入: 1->2->3->4->5->NULL 输出: 5->4 ...
- 剑指Offer - 面试题6. 从尾到头打印链表(栈,递归,反转链表)
文章目录 1. 题目 2. 解题 2.1 stack解题 2.2 递归 2.3 反转链表 1. 题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head ...
最新文章
- python数据分析年薪百万_如何成为一个年薪 50 万以上的数据分析师?
- 空指针:从 0 到 NULL,再到 nullptr
- 第18章 Linux集群架构
- java中while空循环_java – 实现空while循环以保持控制的更好方法
- 如何使用 Mac 的通知中心?
- 阿里巴巴JAVA开发手册最新版pdf
- 设计模式之简单工厂模式和抽象工厂模式
- Mosquitto源码学习
- CSS Sprite(CSS雪碧图)
- 修改输入框placeholder文字样式(颜色、字号等)
- Lefse本地运行并更换颜色
- 数模混合计算机应用,数模混合集成电路的发展现状和前景
- Unity通用计时器
- rstudio查询命令_R语言和RStudio的一些用法,常用命令等
- 伺服驱动器的工作原理及伺服驱动器的常见接线方法
- 强化学习系列(一):强化学习简介
- 如何成为一名优秀的网络工程师?
- Android 热补丁技术——资源的热修复
- C++ 20 新特性简介
- 条件变量pthread_cond_t怎么用
热门文章
- Hadoop 调研笔记
- Linux下的PDF阅读器Foxit
- 如何实现在已有代码之后添加逻辑之继承,组合(静态代理)实现方法
- HTML 5中的tips两则
- 1208. 尽可能使字符串相等
- find 排除_排列五248期定位预测,大师排除两头两尾
- 第103篇Python:Python爬虫系列之书籍爬取,细节拉满
- linux7解绑bond命令,linux多网卡的7种bond模式原理配置
- python拦截修改数据包_拦截指定数据、修改JS -- mitmproxy
- tomcat应用服务器有哪些,2014年最流行的应用服务器排行榜 Tomcat第一