【解题思路】
首先new一个新的head节点,在l1、l2均不为空的时候,比较两个有序链表的头结点,即他们的最小值,选更小的节点加入到head链表的末尾。如果l1、l2中有一个链表还有剩余节点,将剩余节点依次加入到head链表的末尾。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode head = new ListNode();
ListNode cur = head, p = l1, q = l2;
while(p != null && q != null)
{
if(p.val < q.val)
{
cur.next = p;
p = p.next;
cur = cur.next;
}
else
{
cur.next = q;
q = q.next;
cur = cur.next;
}
cur.next = null;
}
while(p != null)
{
cur.next = p;
p = p.next;
cur = cur.next;
}
while(q != null)
{
cur.next = q;
q = q.next;
cur = cur.next;
}
cur.next = null;
return head.next;
}
}