面试题25:合并两个排序的链表
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍是递增排序的。
需要注意的:
任一链表为空或两链表均为空
链表中存在相等数字
public class Q25 {
public static void main(String[] args) {
ListNode head1 = getList();
ListNode head2 = getList();
printLink(head1);
printLink(head2);
ListNode head = merge(head1, head2);
printLink(head);
}
public static ListNode merge(ListNode head1,ListNode head2) {
if(head1==null && head2==null) {
return null;
}
if(head1==null) {
return head2;
}
if (head2==null) {
return head1;
}
ListNode head;
ListNode loc1 = head1;
ListNode loc2 = head2;
if(loc1.val<loc2.val) {
head = loc1;
loc1 = loc1.next;
}else {
head = loc2;
loc2 = loc2.next;
}
ListNode locNode = head;
while(loc1!=null && loc2!=null) {
if(loc1.val<loc2.val) {
locNode.next = loc1;
loc1 = loc1.next;
}else {
locNode.next = loc2;
loc2 = loc2.next;
}
locNode = locNode.next;
}
if(loc1==null) {
locNode.next = loc2;
}else {
locNode.next = loc1;
}
return head;
}
}