请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点head ,只能直接访问要被删除的节点 。
class ListNode {
    int val;
    ListNode next;
    ListNode() {}
    ListNode(int val) { this.val = val; }
    ListNode(int val, ListNode next) { this.val = val; this.next = next; }
}
/**
 * 请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点head ,只能直接访问要被删除的节点 。
 * 题目数据保证需要删除的节点 不是末尾节点
 * @param node
 */
public void deleteNode(ListNode node) {
    node.val = node.next.val; 
    node.next=node.next.next;
}
  代码就这么点。不难,但是当时也是想了一段时间没想出来。
由于不能访问头节点,我们就不能操作这个要删除的节点的前一个节点,所不能想着通过头节点来解决。
代码也很简单,其实就两步:这里假设我们要删的是 4 这个节点。

将 4 的下一个节点的value赋给 4这个节点的value;
node.val = node.next.val;
就得到:
  
接下来,直接将原来的 4 节点指向 4 的下一个节点的下一个节点
node.next=node.next.next;
就得到:

感觉有点狸猫换太子的意思。
                    
                
                
            
        
浙公网安备 33010602011771号