原文题目:
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);
}
};