输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
最容易想到的就是新建一个链表,一个一个将节点连接到新链表中。
代码:
public ListNode Merge(ListNode list1,ListNode
list2) {
ListNode head=new
ListNode(-1);
ListNode node=null;
node=head;
if(list1 == null
&& list2 == null) return
null;
if(list1 == null) return list2;
if(list2 == null) return list1;
while(list1!=null&&list2!=null)
{
if(list1.val
{
node.next=list1;
node=node.next;
list1=list1.next;
}
else
{
node.next=list2;
node=node.next;
list2=list2.next;
}
}
while(list1 != null) {
node.next
= list1;
node =
node.next;
list1 =
list1.next;
}
while(list2 != null) {
node.next
= list2;
node =
node.next;
list2 =
list2.next;
}
return head.next;
}
这关键需要两个节点,一个存放新链表的头结点存放头结点的值可以任意指定,因为返回要返回头结点的后的一个节点才是真正的头结点,一个记录新链表的尾部。上满是比较容易的常规做法,还可以利用递归。
public
ListNode Merge(ListNode list1,ListNode list2) {
if(list1==null){
return
list2;
}else
if(list2==null){
return
list1;
}
ListNode
pMergeHead
=null;
if(list1.val
pMergeHead
= list1;
pMergeHead.next
= Merge(list1.next,list2);
}else{
pMergeHead
= list2;
pMergeHead.next
= Merge(list1,list2.next);
}
return
pMergeHead;
}