237. 删除链表中的节点 (Delete Node in a Linked List)

题目: 237. Delete Node in a Linked List (删除链表中的节点)

连接: 237. Delete Node in a Linked List

Write a function to delete a node in a singly-linked list. You will not be given access to the head of the list, instead you will be given access to the node to be deleted directly.

It is guaranteed that the node to be deleted is not a tail node in the list.

请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。

题目数据保证需要删除的节点 不是末尾节点 。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;//节点值
 *     ListNode next;//获取下一个节点
 *     ListNode(int x) { val = x; }//有参构造函数
 * }
 */
class Solution {
    public void deleteNode(ListNode node) {
        
    }
}
思路分析

在链表 [4, 5, 1, 9] 中,当我们要删除节点 5 时,我们会修改节点 5 上一个节点 4 的指针,让它指向节点 5 的下一个节点,即节点 1
在这里插入图片描述

因为要删除给定的节点,而我们还不清楚这个节点的前一个节点,我们只能确定这个节点的下一个节点,想要删除这个节点,我们就需要找到可以知道上一个节点的节点,把它变成要删除的节点,然后删除它。

例如,还是链表 [4, 5, 1, 9] 链表,还是删除节点 5

首先我们先把节点 5 的下一个节点赋值给它,把它变成一个不需要删除的节点。
在这里插入图片描述

这样来看,我们无论删除第二个节点还是删除第三节点,得到的链表都是 [4, 1, 9]。既然第二个节点不好删除,那么我们就删除第三个节点。

将第二个节点的指针指向第四个节点,这样我们就删除第三个节点了。如下:
在这里插入图片描述

具体实现
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;//节点值
 *     ListNode next;//获取下一个节点
 *     ListNode(int x) { val = x; }//有参构造函数
 * }
 */
class Solution {
    public void deleteNode(ListNode node) {
        node.val = node.next.val;
        node.next = node.next.next;
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值