单链表指针引用的解析
由于今天看到一个单链表反转的奇妙代码,链接是leetcode-java/README.md at master · andavid/leetcode-java (github.com)。引发了我的思考。本文以java代码为例说明。我的困惑:使用节点引用时,是通过引用对象里面存储的相应对象地址值,还是直接获取了地址值。可能说得不是很清楚,那么上代码
class App{
public static void main(String[] args){
DLB h=new DLB(1);
DLB q=new DLB(2);
h.next=q;
DLB t=new DLB(3);
q=t;
while(h!=null){
System.out.print(h.data);
h=h.next;
}
}
class DLB{
int data;
DLB next;
DLB(int x){data = x;}
DLB(){}
}
所以你认为打印结果是12还是13呢?
答案是12。
结合代码说明结论:h.next是直接存储了q的地址值,q被赋值引用t,q变换了地址不会影响原来h.next的值