我试图编写一个方法来删除链接列表中的最后一个节点(用于学习如何修改链接列表..我没有使用java库LinkedList类)..我试图处理与传递的链表只有一个节点的用例。使用java删除链接列表中的节点
但是,当我尝试在删除前后打印链接列表时,它会提供相同的输出,就像节点未被删除一样。
class NodeProcessing{
public static void removeLastNode(Node f){
if (f==null) return;
if(f.next == null){//if linkedlist has single node
f = null;
return;
}
...
}
public static void showList(Node first){
System.out.println("linked list=");
for(Node x = first; x != null; x = x.next){
System.out.print(x.item+" ,");
}
System.out.println();
}
public static void main(String[] args) {
Node a = new Node();
a.item = "one";
showList(a);
removeLastNode(a);
showList(a);
}
}
class Node{
String item;
Node next;
}
输出:
链表= 一个,
链表= 一个,
更新: 当我使用的调试器,我可以看到Node a
在main()
有地址:[email protected]
和Node f
里面的removeLastNode()
也有: [email protected]
您会发现,在您参考或按价值思考后,这是一个常见问题。当您在方法“removeLastNode”中设置节点空值时,它只是将复制引用“f”设置为空,实际节点“a”总是指向实际值。顺便说一下,您可以更改Node.item在你的Method.You可能会发现一些堆和堆栈的细节来寻找答案。 – Sstx