gpt4 book ai didi

java - 删除链表中的节点后,打印节点列表显示删除的节点

转载 作者:搜寻专家 更新时间:2023-10-31 20:00:58 25 4
gpt4 key购买 nike

在下面的代码中,即使在删除节点 (20) 之后,如果我尝试通过将已删除的节点伪装成 head 来打印所有节点,它也会打印所有节点以及已删除的节点。有人可以解释这种行为以及 Java 中的垃圾收集吗?即使删除的节点 (20) 没有下一个元素,它如何能够迭代所有节点?

节点:

class Node{

int nodeint;
Node next;

public Node(int nodeint){
this.nodeint = nodeint;

}

}

链表:

public class linkedlist{

Node head;
//Node next;
public linkedlist(Node obj){

this.head = obj;
}

public Node addnodes(int news){
Node newlink = new Node(news);
newlink.next = head;
head = newlink;
return head;
}

public void printAllNodes(Node obj){
Node current = obj;
while(current!=null){
System.out.println(current.nodeint);
current = current.next;

}

}

public Node remove(){

Node temp = head;
head = head.next;
return temp;
}

public void printHead(){

System.out.println("This is the present head node"+head.nodeint);

}

public static void main(String [] args){

Node obj1 = new Node(2);
Node obj2 = new Node(3);
Node obj3 = new Node(4);
obj1.next = obj2;
obj2.next = obj3;
obj3.next = null;
linkedlist newobj = new linkedlist(obj1);
Node obj = null;
obj = newobj.addnodes(5);
obj =newobj.addnodes(20);
//System.out.println(obj.nodeint);
newobj.printAllNodes(obj);
obj = newobj.remove();
System.out.println("A node is deleted");
newobj.printAllNodes(obj);
newobj.printHead();

}
}

这段代码的输出:

20

5

2

3

4

A node is deleted

20

5

2

3

4

This is the present head node: 5

最佳答案

节点 20 仍然引用下一个节点,即本例中的节点 5。它与垃圾收集无关。如果您想要这种行为,请在您的remove 方法中设置 temp.next == null

关于java - 删除链表中的节点后,打印节点列表显示删除的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34465640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com