在链表中添加元素时有什么变化?



在 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获取最新列表

相关内容

  • 没有找到相关文章

最新更新