【LeetCode】237. 删除链表中的节点

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

现有一个链表 -- head = [4,5,1,9],它可以表示为:

    4 -> 5 -> 1 -> 9

示例 1:

输入: head = [4,5,1,9], node = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.

解题思路:没有看到头结点很诧异,实际上给出的起始节点就是要删除的节点,即在原链表中操作又不能改变链表的结构,所以即把起始节点之后节点的值往前移动一位,然后删除最后一个节点。

void Solution::deleteNode(ListNode* node)
{
    ListNode  *prenode;
    
    while(node->next != NULL)
    {
        node->val = node->next->val;
        prenode = node;
        node = node->next;
    }
    prenode->next = NULL;
}

猜你喜欢

转载自blog.csdn.net/syc233588377/article/details/85691577