Java 如何删除列表中的所有节点
这是删除链表中所有节点而不使用参数的方法Java 如何删除列表中的所有节点,java,singly-linked-list,Java,Singly Linked List,这是删除链表中所有节点而不使用参数的方法 public void deleteAll() { if(head==null) { System.out.println("list already empty"); } else { Node temp=head; Node del; while(temp.next!=null) { del=temp.next; temp=null
public void deleteAll() {
if(head==null) {
System.out.println("list already empty");
}
else {
Node temp=head; Node del;
while(temp.next!=null) {
del=temp.next;
temp=null;
temp=del;
}
System.out.println("all nodes deleted");
}
}
您忘记将head
设置为空
由于垃圾收集,列表中的所有节点不再可引用,将被垃圾收集
将变量设置为null不会产生实际效果。将字段设置为null,将使对象(值)可能无法访问,并可用于垃圾收集。上一个“节点”下一个仍将指向
temp
temp=null
仅影响temp
。它不会影响从中分配的任何变量temp
。而且temp=null
也不起作用,因为java是按值传递的,而不是按引用传递的。因此,我可以编写什么来删除上一个节点。@subhampadhaharyhead=null
非常有效。但是假设我想手动删除列表中的每个节点。我该怎么做?第一个元素可以通过if(head!=null)head=head.next删除代码>。将if
更改为,同时
继续删除元素。但是,立即将head
设置为null也有同样的效果。在java中没有delete
operator/free
函数,因此必须依赖jvm。
public void deleteAll() {
head = null;
}