将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
定义两个节点,一个用作链表的头,一个作为节点的引用
import java.util.Scanner;
public class Main{
public static class ListNode{
int val;
ListNode next;
ListNode(int x){
val=x;
}
}
public static void main(String args[]){
Scanner s=new Scanner(System.in);
ListNode node1=new ListNode(s.nextInt();
ListNode node2=new ListNode(s.nextInt());
ListNode temp1=node1;
ListNode temp2=node2;
while(!s.hasNext("0")){
temp1.next=new ListNode(s.nextInt());
temp1=temp1.next;
temp2.next=new ListNode(s.nextInt());
temp2=temp2.next;
}
ListNode res=mergeTwoList(node1, node2);
while(res!=null){
System.out.println(res.val);
res=res.next;
}
}
public static ListNode mergeTwoList(ListNode l1,ListNode l2){
ListNode dumy=new ListNode(0);
ListNode cur=dumy;
while(l1!=null&&l2!=null){
if(l1.val<l2.val){
cur.next=l1;
cur=cur.next;
l1=l1.next;
}
else{
cur.next=l2;
cur=cur.next;
l2=l2.next;
}
}
if(l1==null){
cur.next=l2;
}
else{
cur.next=l1;
}
return dumy.next;
}
}