输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路分析:
首先,判断链表是够为空;然后,比较链表元素大小,当前链表用于记录,如果满足条件,取节点加入合并链表,之后当前链表和比较的链表后移一位;两个链表共同元素比较完毕之后,如果一个链表为空,则将另外一个链表加入已经合并的链表之后。
/*
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)
return list2;
if(list2==null)
return list1;
ListNode mergeHead=null;
ListNode current=null;
while(list1!=null&&list2!=null){
if(list1.val<=list2.val)
{
if(mergeHead==null)
{
mergeHead=current=list1;
}
else
{
current.next=list1; //取节点加入合并链表
current=current.next; //当前链表后移一位
}
list1=list1.next; //链表1后移一位
}
else
{
if(mergeHead==null)
{
mergeHead=current=list2;
}
else
{
current.next=list2;
current=current.next;
}
list2=list2.next;
}
}
if(list1==null)
{
current.next=list2;
}
if(list2==null)
{
current.next=list1;
}
return mergeHead;
}
}