删除中间节点

题目 - Delete Node in a Linked List

LeetCode-237

面试题 02.03

难度:简单

分析

对于基本的数据结构-链表,我们通常删除链表中的一个节点,都是传入两个参数,即一个链表,一个节点。

根据题目描述,现在只传入一个参数,即要删除的节点。

由于是单向链表,所以我们也无法找到前驱结点。

我们来思考一下,删除链表中的节点,并不是彻底删除这个节点,free节点。

而是通过改变节点的值与后继,从而达到删除的效果

代码

class Solution {
public:
    void deleteNode(ListNode* node) {
        node->val = node->next->val;
        node->next = node->next->next;
    }
};