题意:合并两个已排好链表,使其也是排好序的
思路:
在遍历两个链表时,比较当前两个结点的值,总是选择最小结点到新链表中,同时最小结点所在的链表中的结点移动到下一个
代码如下:
class ListNode
{
int val;
ListNode next;
ListNode(int x) { val = x;}
}
class Solution
{
public ListNode mergeTwoLists(ListNode l1, ListNode l2)
{
ListNode ans = null, tail = null;
ListNode p1 = l1, p2 = l2;
while (p1 != null && p2 != null)
{
if (p1.val < p2.val)
{
if (null == ans)
{
ans = p1;
tail = ans;
}
else
{
tail.next = p1;
tail = tail.next;
}
p1 = p1.next;
}
else
{
if (null == ans)
{
ans = p2;
tail = ans;
}
else
{
tail.next = p2;
tail = tail.next;
}
p2 = p2.next;
}
}
if (p1 != null)
{
if (null == ans) ans = p1;
else tail.next = p1;
}
else if (p2 != null)
{
if (null == ans) ans = p2;
else tail.next = p2;
}
return ans;
}
}