Friday, October 30, 2015

Leetcode: Delete Node in a Linked List

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