我想实现一个 LinkedList
remove 方法,该方法可以删除任何特定位置的项目,但在本例中,我最感兴趣的是删除列表开头(第 0 个位置)的项目。
我的代码适用于 n 大于零的值,因此我为 n==0 编写了一个 if 语句,但在我用 google 搜索答案之前无法理解为什么它不起作用,对我来说,它看起来与我的类似写。
public class LinkedList<E> extends Node<E>{
public LinkedList(){}
public Node<E> head;
//removes node at n and returns contents of removed node;
public E remove(int n){
Node<E> current = head; T info;
if(n==0){info=current.getInfo();
head=current.getNext();return info;}
}
}
我最初的声明是 head=head.getNext()
而不是 head=current.getNext()
因此我的问题。两者有什么区别?
它们是否等效但执行方式不同? 谢谢
最佳答案
如果head
的值被分配给current
(就像这里一样),它们应该是等价的。因为它们是对象,而不是基元,所以将一个对象分配给另一个对象会使它们都引用同一个对象。因此,调用 head.getNext()
和 current.getNext()
都应该返回对同一对象的引用。
关于java - head=head.getNext() 和 head=current.getNext() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21977613/