剑指 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. 实现

 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 }
View Code

5. 结语

  努力去爱周围的每一个人,付出,不一定有收获,但是不付出就一定没有收获! 给街头卖艺的人零钱,不和深夜还在摆摊的小贩讨价还价。愿我的博客对你有所帮助(*^▽^*)(*^▽^*)!

  如果客官喜欢小生的园子,记得关注小生哟,小生会持续更新(#^.^#)(#^.^#)。

但行好事 莫问前程
原文地址:https://www.cnblogs.com/haifwu/p/14999747.html