题目:
思路:
1.先定义一个临时结点,并且定义一个指针tail指向该结点(该结点再后续将进行移动,方便单链表中元素的添加)
2.考虑特殊情况,如果两个链表有一个为空,那么返回另一个链表的头结点
3.一般情况,比较两个链表头结点的值,值小的那个结点添加在临时结点后边,tail后移,(方便继续添加元素)并将值小的那个结点的指针也后移,方便继续与另一个链表头结点进行比较,直到结点指向为空,则是第二种情况。
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode dummy_node=new ListNode(0);
dummy_node.next=null;
ListNode tail=dummy_node;
while(true)
{
if(l1==null)
{
tail.next=l2;
break;
}
if(l2==null)
{
tail.next=l1;
break;
}
if(l1.val<l2.val)
{
tail.next=l1;
l1=l1.next;
tail=tail.next;
}
else
{
tail.next=l2;
l2=l2.next;
tail=tail.next;
}
}
return dummy_node.next;