gpt4 book ai didi

java - 在链表中添加元素时发生了什么变化?

转载 作者:行者123 更新时间:2023-12-01 18:53:40 24 4
gpt4 key购买 nike

在LinkedList中,当访问下一个节点时,我的老师使用了以下方法:

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++;
}
}
}

让我困惑了一段时间的是,在代码片段中,我们似乎只是在方法中创建的新当前节点上进行操作,以遍历列表并添加元素。那么到底是什么让实例变量 this.header 发生了变化呢?谢谢!

最佳答案

在下面的代码片段中,header 变量在添加第一个元素时设置

if(header==null){
header= new Node<T>(element);
}

在对 add 方法的后续调用中,您首先将 current 的值设置为 header (current 指向header 也指向内存中的同一位置)。当您使用 current 变量遍历列表时,您实际上是在遍历最初使用 header

存储的对象

到达最后一个节点时,此代码添加新元素作为下一个节点。 current 变量的范围在 else block 内。但是,您始终可以使用变量 header

获取最新列表

关于java - 在链表中添加元素时发生了什么变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59695701/

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