LeetCode——237.Delete Node in a Linked List

本文探讨了在单链表中删除指定节点的有效方法,特别是当仅提供目标节点的访问权限时。通过实例展示了如何绕过传统方法,利用节点值和引用覆盖实现删除,为链表操作提供了一种新颖的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

237.Delete Node in a Linked List

  • 问题描述
    编写一个函数来删除单链表中的一个节点(除了尾部),只给出对该节点的访问。

    给定链表-Head=[4],[5],[1-9],如下所示:

   4 -> 5 -> 1 -> 9
Input: head = [4,5,1,9], node = 5
Output: [4,1,9]
Input: head = [4,5,1,9], node = 1
Output: [4,5,9]
  • 思路解法
    1.链表由结点构成,Java需要创建结点对象,对象属性有结点值,和下一个结点的引用。

    2.知道要删除的结点时,由于改链表是单向链表,只能知道该节点的下一个结点,因此不能用该节点的上一个结点的引用,指向该节点的下一个结点。

3.由于知道了该节点的信息我们就可以得到该节点之后的所有结点的信息,我们可以不用直接删除该节点,或者说删除不了该节点,但我们可以删除下面的结点,所以让该节点对象里的值和下一个几结点的对象引用被该节点的下一个结点覆盖后,再删除该节点的下一个结点,就能完成任务。

  • 代码

java

    /**
     * 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.对于链表的结点删除操作有很多方法,其中包括知道删除的结点的前一个结点的引用,直接将该节点的下一个结点的引用赋值要删除的结点的前一个结点的引用。

2.对于该类题目给我们提供了删除结点的其他思路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值