给出java中的自定义链表实现(来自Cracking The Coding Interview)
public class Node {
public Node next = null;
public int data;
public Node(int d) {
data = d;
}
protected void appendToTail(int d){
Node end = new Node(d);
Node n = this;
while (n.next != null) {
n = n.next;
}
n.next = end;
}
}
如果我们要创建一个链接列表,然后在没有临时变量的情况下迭代它以指向原始头部,即
Node list = new Node(5);
list.appendToTail(2);
list.appendToTail(4);
给我们一个清单
5 -> 2 -> 4
如果我发出
会发生什么list = list.next;
这会是C中的内存泄漏吗?或Java垃圾收集?
答案 0 :(得分:1)
简短的回答:不,不会有内存泄漏。
如果您指示指针指向第二个节点,则表示对头部的引用丢失。这假设您没有其他对头部的引用。
如果没有任何引用指向它,该对象将被标记为垃圾收集。