单链接列表

时间:2018-03-19 12:50:05

标签: java data-structures

我正在为SingleLinkedList实现编写一个清晰的函数。

  /*
 * Take the next node in some temp variable
 * free the current node
 * after freeing the current node, go to the next node with temp variable
 * repeat this process for all nodes
 */
public void clear() {
    if ( head == null ) {
        return;
    }

    SListNode current = head;
    while ( current._next != null ) {
        SListNode temp = current._next;
        current._data = 0;
        current._next = null;
        current = temp;
    }

    current._data = 0;
    head = null;
    size = 0;
}

SingleLinkedList类具有:

public class SingleLinkedList {
   private SListNode head;
   private int size;
... various member functions
}

SListNode有:

public class SListNode {
   int _data;
   SListNode _next;
}

检查了deleteList函数的执行情况: https://www.geeksforgeeks.org/write-a-function-to-delete-a-linked-list/

我认为deleteList函数使得头部指向null,而所有其他链接节点仍然应该指向其他链接,这可能会妨碍gc不进行清理。

问题是:我指示的方式(清楚fn)是否比上面网站(deleteList)中指出的解决方案更好?

2 个答案:

答案 0 :(得分:0)

在Java中,悬挂指针不会发生,因为没有显式释放内存的机制。相反,垃圾收集器可能会释放内存,但只有当对象不再可以从任何引用中访问时。

答案 1 :(得分:0)

不,它不会留下任何悬空指针。垃圾收集器清除每个无法访问的指针。