题目描述:
输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。
思路分析:
设置一个辅助结点p,然后从头到尾比较2个链表中结点的值,哪个小就把哪个插入到p的尾部,以此类推。
参考代码:
public static ListNode merge(ListNode head1, ListNode head2) {
if(head1 == null)return head2;
if(head2 == null)return head1;
//关键:构造一个辅助结点
ListNode p = new ListNode(-1);
ListNode q = p;//记录首结点
while(head1 != null && head2 != null){
if(head1.val <= head2.val){
p.next = head1;
head1 = head1.next;
}
else{
p.next = head2;
head2 = head2.next;
}
p = p.next;
}
if(head1 == null)p.next = head2;
if(head2 == null)p.next = head1;
return q.next;
}