21. Merge Two Sorted Lists
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.
如题,将两个有序的链表合并成一个链表,并且使其大小排列是从小到大。
public ListNode mergeTwoLists(ListNode l1, ListNode l2)
{
if (l1 == null) { return l2;}
if (l2 == null) { return l1;}
ListNode head = null;
ListNode end = null;
ListNode first = l1;
ListNode second = l2;
while (first != null && second != null)
{
int temp1 = first.val;
int temp2 = second.val;
if (temp1 <= temp2)
{
if (head == null)
{
head = first;
end = head;
}
else
{
end.next = first;
end = end.next;
}
first = first.next;
}
else
{
if (head == null)
{
head = second;
end = head;
}
else
{
end.next = second;
end = end.next;
}
second = second.next;
}
}
//两个链表的长度不同时,当一方遍历完毕,另一方剩余的元素全部接到新的链表中
if (first != null)
{
end.next = first;
}
if (second != null)
{
end.next = second;
}
return head;
}
略微长了些……