将两个非递减链表合成一个,并使得合成后的链表已然是有序(非递减)链表:
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
if(list1==null&&list2==null)return null;
if(list1==null&&list2!=null)return list2;
if(list1!=null&&list2==null)return list1;
ListNode newlist = new ListNode(-1);//建立新的节点,只作为头结点使用
ListNode temp = newlist;//创建新的临时节点
while(list1!=null&&list2!=null){//判断循环条件两个链表节点是否为空
if(list1.val<=list2.val){//list1的值大于等于list2,将list1当前节点连接到newlist上
temp.next=list1;
temp = temp.next;//临时节点后移到新加入到节点
list1 = list1.next;//list1位置后移一个位置
}
else{//注释内容同上
temp.next = list2;
temp = temp.next;
list2 = list2.next;
}
}
if(list2!=null) temp.next=list2;//循环结束如果list2有空余节点,把list2连接到newlist的最后一个节点上,即temp节点
if(list1!=null) temp.next=list1;//同上
newlist = newlist.next;//由于初始化时新建了一个节点,故删除此节点
return newlist;//返回新的节点newlist
}
}