关于java中对象的问题,这个要和上一个题解一起看:
无论是将一个对象引用(指为定义的那种)赋值为NULL和new一个新的对象,都代表着改变这个对象引用的指向,而不是对对象引用当前指向的那块对象内容存储区域进行改变,切记。
这个题目中就很明显,代码如下:
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { ListNode head=new ListNode(0); if(list1==null&&list2==null){ return null; } if(list1==null&&list2!=null){ return list2; } if(list2==null&&list1!=null){ return list1; } ListNode l1,l2,lnew=head; ListNode lnewpre=head; for(l1=list1,l2=list2;l1!=null&&l2!=null;lnew=lnew.next){ if(l1.val<l2.val){ lnew.val=l1.val; lnew.next=new ListNode(0); lnewpre=lnew; l1=l1.next; }else{ lnew.val=l2.val; lnew.next=new ListNode(0); lnewpre=lnew; l2=l2.next; } } if(l1==null){ while(l2!=null){ lnew.val=l2.val; lnew.next=new ListNode(0); lnewpre=lnew; lnew=lnew.next; l2=l2.next; } } if(l2==null){ while(l1!=null){ lnew.val=l1.val; lnew.next=new ListNode(0); lnewpre=lnew; lnew=lnew.next; l1=l1.next; } } lnewpre.next=null; return head; } }