思路:指针p用于串联怎个链表,比较两个指针的大小,连接较小的一个。如果一个链表到达链尾,连接另外一个链表余下来的所以节点。
1 public ListNode mergeTwoLists(ListNode l1, ListNode l2) { 2 ListNode head; 3 ListNode p = null; 4 //判断初始链表是否为空 5 if (l1 == null && l2 == null) { 6 return null; 7 } 8 if(l1==null){ 9 return l2; 10 } 11 if(l2==null){ 12 return l1; 13 } 14 // 将最小的数作为head 15 if (l1.val <= l2.val) { 16 head = l1; 17 l1=l1.next; 18 } else { 19 head=l2; 20 l2=l2.next; 21 } 22 p=head; 23 // 比较两个链表大小,连接较小的一个 24 while (l1!= null && l2 != null) { 25 if(l1.val<=l2.val){ 26 p.next=l1; 27 p=l1; 28 l1=l1.next; 29 }else{ 30 p.next=l2; 31 p=l2; 32 l2=l2.next; 33 } 34 } 35 if(l1==null){ //如果l1到结尾,连接l2剩余部分 36 while(l2!=null){ 37 p.next=l2; 38 p=l2; 39 l2=l2.next; 40 } 41 }else{ //否则连接l1剩余部分 42 while(l1!=null){ 43 p.next=l1; 44 p=l1; 45 l1=l1.next; 46 } 47 } 48 return head; 49 }