将两个排序链表合并为一个新的排序链表
样例
样例
给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。
import java.util.Scanner;
/**
* 将两个排序链表合并为一个新的排序链表
样例
给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。
* 这里链表是带头结点的
* @author Dell
*
*/
public class Test165 {
public static ListNode mergerTwoLists(ListNode l1, ListNode l2)
{
if(l1==null||l1.next==null)
return l2;
if(l2==null||l2.next==null)
return l1;
ListNode result=new ListNode(-1);
ListNode r=result;
ListNode p=l1.next;
ListNode q=l2.next;
while(p!=null&&q!=null)
{
if(p.val<q.val)
{
r.next=p;
r=r.next;
p=p.next;
}
else
{
r.next=q;
r=r.next;
q=q.next;
}
}
if(p!=null)
{
r.next=p;
}
if(q!=null)
{
r.next=q;
}
return result;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
ListNode list1=new ListNode(-1);
ListNode list2=new ListNode(-1);
ListNode p=list1;
ListNode q=list2;
for(int i=0;i<n;i++)
{
ListNode temp1=new ListNode(sc.nextInt());
p.next=temp1;
p=p.next;
}
for(int j=0;j<m;j++)
{
ListNode temp2=new ListNode(sc.nextInt());
q.next=temp2;
q=q.next;
}
ListNode result=mergerTwoLists(list1,list2);
while(result.next!=null)
{
System.out.print(result.next.val+" ");
result=result.next;
}
}
}