//这种写法感觉和下面没什么区别啊,只是将temp.next 赋给了 deleteNode 而已
if(key.equals(temp.next.key)) {
//假设temp.next 是要删除的节点
Node deleteNode = temp.next;
temp.next = deNode.next;
deNode.next = null;
}
//为什么这种写法会将(temp.next)节点 和 (temp.next.next节点后面) 的所有的节点全部删除了
if(key.equals(temp.next.key)) {
//假设temp.next 是要删除的节点
temp.next = temp.next.next;
temp.next.next = null;
}
第二个写法,因为你temp.next = temp.next.next; 这句已经把temp.next改变了,已经不指向要删除的节点,此时你temp.next.next = null不是把被删除节点的next清除,而是把后面的节点全部删除。
if(key.equals(temp.next.key)) {
上面代码可以删除,但可能会导致内存泄漏(这里看不出会泄露)。