在 LinkedList 中,在访问下一个节点时,我的老师使用了以下 apporach:
public class LinkedList<T>{
private Node<T> header;
private int size;
public LinkedList(){
this.header=null;
this.size=0;
}
public void add(T element){
if(header==null){
header= new Node<T>(element);
}
else{
Node<T> current= header;
while(current.getNext()!=null){
current=current.getNext();
}
current.setNext(new Node<T>(element));
size++;
}
}
}
一段时间以来,我一直感到困惑的是,在代码片段中,似乎我们只在方法中创建的新current
节点上运行以遍历列表并添加元素。那么究竟是什么使实例变量this.header
更改呢?谢谢!
在以下代码片段中header
变量是在添加第一个元素时设置的
if(header==null){
header= new Node<T>(element);
}
在随后对该方法add
调用中,您首先将值current
设置为header
(current
指向内存中header
也指向的相同位置(。当您使用变量遍历列表current
您实际上是在遍历您最初使用header
存储的对象
到达最后一个节点时,此代码将新元素添加为下一个节点。 变量的范围current
在您的 else 块内。但是,您始终可以使用变量header
获取最新列表