2つの増分ソートされたチェーンテーブルを入力し、2つのチェーンテーブルを結合し、新しいチェーンテーブルのノードを増分ソートします.


/**
 *            ,                          
 *
 * @param head1        
 * @param head2        
 * @return          
 */
public static ListNode merge(ListNode head1, ListNode head2) {
        //          ,          
        if (head1 == null) {
            return head2;
        }

        //          ,          
        if (head2 == null) {
            return head1;
        }

        //         ,         
        ListNode root = new ListNode();
        //               
        ListNode pointer = root;

        //                 
        while (head1 != null && head2 != null) {
            //             
            if (head1.value < head2.value) {
                pointer.next = head1;
                head1 = head1.next;
            } else {
                pointer.next = head2;
                head2 = head2.next;
            }

            //                
            pointer = pointer.next;
        }

        //      if     if        
        //                 ,               
        if (head1 != null) {
            pointer.next = head1;
        }

        //                 ,               
        if (head2 != null) {
            pointer.next = head2;
        }
        //       
        return root.next;
    }