image.png
对于这种情况,我们不知道被删除节点的前一个节点,也就无法

  1. node.next = node.next.next;

这样处理了。

于是我们只能改变链表中的值来实现这个操作了。
image.png

  1. 把当前要删除节点的下一个节点的值复制给当前节点image.png
  2. 把当前要删除节点的下一个节点删除掉即可

image.png

  1. 删除掉之后即可

    code

  1. public void deleteNode(ListNode node) {
  2. //特殊情况判断
  3. if(node==null ||node.next==null)
  4. return;
  5. //下一个节点的值赋值给当前值
  6. node.val = node.next.val;
  7. //删除下一个节点
  8. node.next = node.next.next;
  9. }