java - 遍历链表时不会更改头引用
问题描述
我是一个新学习者,正在学习链表和java。
我已经知道当两个引用指向同一个对象时,更改一个引用的字段值也会更改另一个引用字段值的概念。假设我们有以下课程:-
public class Test {
int a;
public static void main(String[] args) {
Test t=new Test();
t.a=15;
System.out.println("a="+t.a); //will print a=15
Test temp=t;
temp.a=20;
System.out.println("a="+t.a); //will print a=20
}
}
这就是我们所说的浅拷贝,通过一个引用更改对象值将更新指向该对象的所有引用的值。
head
同样,我通过临时引用in来遍历下面的代码的链表currNode
。
public static void printList(LinkedList list) {
Node currNode = list.head;
while (currNode != null) {
System.out.print(currNode.data + " ");
currNode = currNode.next;
}
}
当我们执行时,为什么当它到达链表末尾时currNode = currNode.next;
不更新head
to的值?null
解决方案
在第一个示例 ( class Test
) 中,您对同一个对象有两个引用,第一个中的任何更改都会影响另一个引用。在第二个示例中也是如此,如果您在第一次迭代时更改头部的数据,它将更改头部的数据,currtNode
因为两个引用都指向同一个对象。但是该语句将 tocurrNode = currNode.next;
的值更改currNode
为指向下一个节点,因此在第一次迭代之后,两个引用head
并不currNode
指向同一个对象,因为在函数的末尾head!=null
推荐阅读
- c# - 为什么我的项目中的程序集绑定失败?
- javascript - FirebaseError:[code=invalid-argument]:函数 Query.where() 需要有效的第三个参数,但未定义
- python - 我的目录应用显示空白页,我该怎么办?
- html - 将 html 、 css 页面连接到页眉和页脚
- c# - ASP.NET Core 3.1 SignalR:未调用方法
- kotlin-coroutines - Kotlin Coroutines:Hot Flow 掌握线程
- react-native - 在带有 wix/react-native-navigation 的模态中使用 react-native-gesture-handler (RNGH)
- c - 是否可以查看/修改通用 Windows 虚拟打印驱动程序的代码以重定向“打印”文件的发送位置?
- python - 从漂亮的汤对象中提取文本时出现类型错误
- python - 在 Git Bash 中运行 pip freeze - TypeError: 'module' object is not callable