将两个有序链表合并为一个链表代码实现
方法一代码如下:
/** * 实现两个有序链表的合并 * @param head1 第一个链表的头节点 * @param head2 第二个链表的头节点 */ public static HeroNode mergeList(HeroNode head1,HeroNode head2){ HeroNode newList = new HeroNode(); HeroNode newL = newList; HeroNode temp1 = head1.next; HeroNode temp2 = head2.next; if (temp1 == null){ newList = temp2; return newList; } if (temp2 == null){ newList = temp1; return newList; } while(temp1 != null && temp2 != null){ if(temp1.getNo() <= temp2.getNo()){ newL.next = temp1; temp1 = temp1.next; }else{ newL.next = temp2; temp2 = temp2.next; } newL = newL.next; } newL.next =(temp1 == null ? temp2:temp1); return newList.next; }
方法二代码(递归实现):
if (l1 == null) { return l2; } else if (l2 == null) { return l1; } else if (l1.val < l2.val) { l1.next = mergeTwoLists(l1.next, l2); return l1; } else { l2.next = mergeTwoLists(l1, l2.next); return l2; }
浙公网安备 33010602011771号