LeetCode解题--删除某一指定的节点

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。

现有一个链表 – head = [4,5,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;   
    }
    
}

解题思路:一般删除一个节点,是略过当前要删除的节点,是指向当前删除节点的指针指向后一个指针,如下图所示:
在这里插入图片描述
但是注意审题,本题中我们只知道被删除的节点是5,但并不知道它前面的节点是谁。
所以我们首先需要将节点5的后一个节点的值,保存在节点5中。
这样我们就可以放心删除了,无论是删除节点5还是删除节点5后面的节点,所得到的结果都是正确的。

发布了29 篇原创文章 · 获赞 1 · 访问量 1245

猜你喜欢

转载自blog.csdn.net/weixin_42082088/article/details/104072786