输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
//创建头结点来存放新的链表
ListNode newNode=new ListNode(-1);
ListNode Head=newNode;
while(list1!=null && list2!=null){
if(list1.val <= list2.val){
newNode.next=list1;
list1=list1.next;//list1 往后面走一个
newNode=newNode.next;//同时,newNode 也往后面走一个,以便于后续插入
}
else {
newNode.next=list2;
list2=list2.next;//list2 往后面走一个
newNode=newNode.next;//同时,newNode 也往后面走一个,以便于后续插入
}
}
if(list1==null){
newNode.next=list2;
}
else{
newNode.next=list1;
}
return Head.next;
}
}
注意:要用一个Head 来记录新链表的起始位置ListNode Head=newNode,因 ListNode newNode=new ListNode(-1);
即Head最开始指向的节点无val值,故应返回Head.next