从链表实现到对象引用
有关结点类的疑惑
实现链表时首先要编写结点类,如下图

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指向的对象是同一个对象。
理解了引用和对象,画图时可以简化


浙公网安备 33010602011771号