从链表实现到对象引用
有关结点类的疑惑
实现链表时首先要编写结点类,如下图
Node<E> next;
链表实现上一个结点指向下一个结点的关键在于:把Node类型的引用作为结点对象的一个属性。
对象引用
关于对象引用解释的地址:作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!
引用的值传递,意味着对象的地址被复制,并传递给Java方法。Java方法根据该引用的访问将会影响对象。
链表中的对象引用
那么就很容易理解链表的具体操作了。
例如链表的添加方法:
public void add(Node node){ Node temp = head; while(true){ if(temp.next == null){ break; } temp = temp.next; } temp.next = node; }
Node temp = head; 使得temp和head指向同一个结点对象
if(temp.next == null); new node时next是没有指向任何对象的,所以第一个结点,即head的next == null。
temp = temp.next 如果temp.next非空,说明有指向下一个结点;那么让temp和temp.next指向同一个结点对象。
显然,这时temp就会和下一个结点的引用指向同一个结点对象。
通过while循环,可以找到列表的尾部。
temp.next = node; 这时由于temp和最后一个结点(设为node10)指向的是同一个对象,所以temp.next改变node1.next也会一样改变。
这行代码使得temp.next 和node指向同一个对象。
所以最后node10的属性next(node类型的引用)和node10的后一个结点node指向的对象是同一个对象。
理解了引用和对象,画图时可以简化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律