一.实现思路
1.准备一个新的头节点,还有它的当前指正newCur
2.两条链表都准备一个指针cur,指向当前位置
3.两个cur作对比,id值小的用一个节点next保存下一个节点,防止节点断开,然后将当前节点连接到新的链表
4.如果一条节点已经遍历完了,newCur.next = 另一条链表的cur节点就可以了
二.代码实现
//合并两个有序的单向链表
public static Node mergeTwoList(Node head1,Node head2){
if(head1.next == null && head2.next == null){
return null;
}
if(head1.next == null){
return head2;
}
if(head2.next == null){
return head1;
}
Node newHead = new Node(-1, "");
Node cur1 = head1.next;
Node cur2 = head2.next;
Node cur3 = newHead;
while(cur1 != null && cur2 != null){
if(cur1.id >= cur2.id){
Node next2 = cur2.next;
cur3.next = cur2;
cur2 = next2;
}else {
Node next1 = cur1.next;
cur3.next = cur1;
cur1 = next1;
}
cur3 = cur3.next;
}
cur3.next = cur1 == null ? cur2 : cur1;
return newHead;
}