当删除链表中的最后一个节点时,将temp赋值为null只是将temp的引用指向null,并不会真正删除该节点。这是因为在Java中,对象的删除是由垃圾回收器来负责的,只有当一个对象没有任何引用指向它时,垃圾回收器才会将其回收。
要删除链表中的最后一个节点,可以采取以下步骤:
以下是一个示例代码:
public class LinkedList {
private Node head;
private class Node {
private int data;
private Node next;
public Node(int data) {
this.data = data;
this.next = null;
}
}
public void deleteLastNode() {
if (head == null) {
return;
}
if (head.next == null) {
head = null;
return;
}
Node prev = null;
Node temp = head;
while (temp.next != null) {
prev = temp;
temp = temp.next;
}
prev.next = null;
temp = null;
}
}
在这个示例代码中,deleteLastNode()方法用于删除链表中的最后一个节点。首先判断链表是否为空,如果为空则直接返回。然后判断链表是否只有一个节点,如果是,则将head置为null。接下来,使用两个指针prev和temp遍历链表,直到temp指向最后一个节点。然后将prev的next指针指向null,断开最后一个节点的连接。最后,将temp设置为null,以便垃圾回收器回收该节点。
这是一个简单的链表删除最后一个节点的实现,适用于单向链表。如果是双向链表,删除最后一个节点的步骤会稍有不同。
领取专属 10元无门槛券
手把手带您无忧上云