题目:
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
题解:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode l = new ListNode(0);//这里不是ListNode l = <del><em>null</em></del>;
ListNode tmp = l;
while(l1 != null && l2 != null){
if(l1.val<=l2.val){
tmp.next = l1;
l1 = l1.next;
}
else{
tmp.next = l2;
l2 = l2.next;
}
tmp = tmp.next;
}
//l2取尽,只剩l1
/*while(l1 != null){
tmp.next = l1;
tmp = tmp.next;
l1 = l1.next;
}*/
if(l1 != null){//链表结构,故<u><em>if即可胜任</em></u>
tmp.next = l1;
}
//l1取尽,只剩l2
/*while(l2 != null){
tmp.next = l2;
tmp = tmp.next;
l2 = l2.next;
}*/
if(l2 != null){
tmp.next = l2;
}
return l.next;
}
}
再多说一句,
若要开始ListNode l = null,最后return l,则需要在while语句前判断l1和l2的值以便给l头结点赋值(由此在更前需添加判断l1和l2是否为null的语句),也可Acess,但繁琐不堪。