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;
}

 

posted @ 2020-05-12 21:58  星海寻梦233  阅读(74)  评论(0编辑  收藏  举报