Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.

    Given linked list — head = [4,5,1,9], which looks like following:

    image.png

    Example 1:

    1. Input: head = [4,5,1,9], node = 5
    2. Output: [4,1,9]
    3. Explanation: You are given the second node with value 5, the linked list should become 4 -> 1 -> 9 after calling your function.

    Example 2:

    1. Input: head = [4,5,1,9], node = 1
    2. Output: [4,5,9]
    3. Explanation: You are given the third node with value 1, the linked list should become 4 -> 5 -> 9 after calling your function.

    Note:

    • The linked list will have at least two elements.
    • All of the nodes’ values will be unique.
    • The given node will not be the tail and it will always be a valid node of the linked list.
    • Do not return anything from your function.

    题意

    删除链表中的指定结点,但参数只提供对该结点的引用。

    思路

    用下一个结点的val域和next域替换当前结点的对应域。


    代码实现

    1. /**
    2. * Definition for singly-linked list.
    3. * public class ListNode {
    4. * int val;
    5. * ListNode next;
    6. * ListNode(int x) { val = x; }
    7. * }
    8. */
    9. class Solution {
    10. public void deleteNode(ListNode node) {
    11. node.val = node.next.val;
    12. node.next = node.next.next;
    13. }
    14. }