解题思路:
1.用尾插的方法来合并链表,没有新建节点,是拼接节点。
2.先是判断特殊情况,若l1和l2中其中一个为空,直接链接对方链表:例如l1为空,则链接l2。
当l1和l2都为空时,返回空。
3.当两者都不为空时,先指向l1和l2链表的第一个节点,若l1.val<l2.val,让dH指向了l1,然后l1变为新的last节点,l1向后走,l1现在的值再和l2的值比较,以此下去。
4.当其中一个链表走完后,直接让last链接另一个没有走完的链表。
package 合并有序链表;
public class MergeTwoLists {
public static void main(String[] args) {
}
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
ListNode resultNode = new ListNode(0);
ListNode p= resultNode;
while (list1!=null&&list2!=null){
if(list1.val<list2.val){
p.next=list1;
list1=list1.next;
}else{
p.next=list2;
list2=list2.next;
}
p=p.next;
}
if(list1!=null){
p.next=list1;
}
if(list2!=null){
p.next=list2;
}
return resultNode.next;
}
}