237. Delete Node in a Linked List

原文题目:

237. Delete Node in a Linked List

读题:

删除单链表中一个节点,入参是这个节点,这和普通的删除单链表中的节点不一样,无法直接将node节点的前级节点的next指针指向node节点的后级,然后free(node)

解题思路:

node节点的前级节点的next指针的位置无法改变,只能从node节点的next入手了,实际上可以将node节点的后级节点复制一份覆盖node节点,然后删除后级节点即可,这样实际上并没有真正释放node节点,但却实现了node节点的删除。

class Solution 
{
public:
    void deleteNode(ListNode* node) 
	{
		if(NULL == node) return;

        ListNode* tempNode = node->next;
		if(tempNode)
		{
			node->val = tempNode->val;
			node->next = tempNode->next;
		}
		free(tempNode);
    }
};

  

原文地址:https://www.cnblogs.com/xqn2017/p/8110873.html