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