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 are given the third node with value 3
, the linked list should become 1 -> 2 -> 4
after calling your function.
Subscribe to see which companies asked this question
--------------------------------------------
--------------------------------------------
It only gives you the access to a node in a list. So it's impossible to delete the node itself as we don't know the previous node! Instead of delete the node, a compensation method is to copy the value of next to this node and delete the next node.
///////////////////////////////////////////////////
//code
class Solution {
public:
void deleteNode(ListNode* node) {
ListNode *p=node->next;
node->val=node->next->val;
node->next=p->next;
delete p;
}
};
No comments:
Post a Comment