237.Delete Node in a Linked List
给定一个单链表中的节点,将这个节点删除。
Input: head = [4,5,1,9], node = 5
Output: [4,1,9]
Explanation: You are given the second node with value 5, the linked list should become 4 -> 1 -> 9 after calling your function.
思路:
与之前的题不同,这次没有给链表的头结点,所以得不到当前节点的前一个节点。
操作:将当前节点的所存的值用下一个节点的值覆盖,但是不要改变当前节点的地址,因为前一个节点的指针固定指向当前节点的地址,在这个不能变的前提下,就不要改变当前节点地址。让 node->next = node->next->next,然后将下一个节点的内存释放掉。
void deleteNode(ListNode* node) { node->val = node->next->val; ListNode* tmp = node->next; node->next = node->next->next; delete tmp; }