剑指 Offer 18. 删除链表的节点
1. 题目
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点
2. 示例
示例1:
输入: head = [4,5,1,9], val = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.
示例2:
输入: head = [4,5,1,9], val = 1
输出: [4,5,9]
解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.
3. 题解
本题是很简单的链表删除操作。
步骤:
1. 保存当前节点
2. 判断下一个节点,若下一个节点是要删除的节点,让当前节点的后指针指向下一个节点的后一个节点。
3. 若不是,继续遍历。
4. 实现
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public ListNode deleteNode(ListNode head, int val) {
2 // 判空
3 if(head == null) return null;
4 // 如果头节点等于要删除的值,输出下一个节点
5 if(head.val == val) return head.next;
6 // 定义输出头
7 ListNode cur = head;
8 // 遍历查找
9 while(head.next != null) {
10 // 下一个节点是要删除的节点
11 if(head.next.val == val) {
12 // 当前节点指向下一个节点的后续节点,并结束遍历
13 head.next = head.next.next;
14 break;
15 }
16 // 继续遍历
17 head = head.next;
18 }
19 return cur;
20 }
5. 结语
努力去爱周围的每一个人,付出,不一定有收获,但是不付出就一定没有收获! 给街头卖艺的人零钱,不和深夜还在摆摊的小贩讨价还价。愿我的博客对你有所帮助(*^▽^*)(*^▽^*)!
如果客官喜欢小生的园子,记得关注小生哟,小生会持续更新(#^.^#)(#^.^#)。
但行好事 莫问前程