package com.my.util;
/**
* 单向链表节点
* */
public class SingleNode {
public int value;
public SingleNode next;
public SingleNode(int data){
this.value = data;
}
}
package com.my.suanfa;
import com.my.util.SingleNode;
/**
* 一种怪异的节点删除方式
* 因为无法找到该节点的上一个节点,因此无法直接删除该节点,但是可以让该节点的值等于下一个节点的值,然后删除该节点的下一个节点
* 存在问题:
* 1:无法删除最后一个节点
* 2:本质上并没有删除该节点,而是改变了该节点的值,在实际工程中可能带来很大的问题
* */
public class Solution14 {
public void removeNodeWired(SingleNode node) {
if(node == null) {
return;
}
SingleNode next = node.next;
if(next == null) {
throw new RuntimeException("you can not remove last node");
}
node.value = next.value;
node.next = next.next;
}
}