Topic
Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.
Supposed the linked list is 1--2, 3, 4 and you were given the third node with value 3, the linked list Shoul D Become 1-2-4 after calling your function.
Analysis
The topic requires the deletion of the specified node, but the given parameter has only the target node.
Transfer the thought to copy the value of the node after the target node, then delete the next node of the target node.
AC Code
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: voiddeleteNode(ListNode* node) { if (node == NULL) return; elseif(node->next != NULL){ //只给出一个要删除的结点,转移思维,改成拷贝目标结点后结点的值,然后删除目标结点的后一结点 node->val = node->next->val; node->next = node->next->next; } else{ return; } }};
GitHub test Program source code
Leetcode (237) Delete Node in a Linked List