如何删除自定义链表中的所有节点?

use*_*362 1 java

我可以删除我的链表的所有节点以通过我的这段代码删除吗?如果没有,那么如何一次删除所有节点!

我的代码是

EditNode mynode=start;
while(mynode!=null){
    mynode.editnext=null;
    mynode=mynode.editnext;
}
Run Code Online (Sandbox Code Playgroud)

需要帮助!提前致谢...

Eri*_*son 5

您的代码这么想的工作,因为你设置mynode.editnextnull,然后尝试引用它。所以这是行不通的。

要删除链表中的所有节点,在 Java 中,只需清除头指针即可。Java 将垃圾收集其余部分。

start = null;
Run Code Online (Sandbox Code Playgroud)

请注意,此答案适用于您的自定义链接列表。在生产中,您应该使用 的 Java 实现LinkedList,它有一个.clear()方法。这是处理列表的更简洁的方法。

这是因为您可能有指向列表中项目的杂散指针,这将保持对列表其余部分的引用并防止垃圾收集。您不应该将像editnext财产这样的组织结构构建到数据结构中。它们应该是单独的类。

要清除每个节点中的所有指针,请使用以下代码:

EditNode mynode;
while (start != null){
    mynode = start.editnext;
    start.editnext = null;
    start = mynode;
}
Run Code Online (Sandbox Code Playgroud)