将两个有序链表合并为一个链表代码实现

方法一代码如下:

    /**
     * 实现两个有序链表的合并
     * @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;
        }

 

posted @ 2022-07-10 19:19  努力学习の小白  阅读(92)  评论(0)    收藏  举报
Live2D