자바 구현 - 두 개의 질서 있 는 링크 통합

1950 단어 데이터 구조
두 개의 질서 있 는 링크 를 합병 하면 원래 두 개의 링크 는 질서 가 있 고 전 체 를 합병 하 는 것 도 질 서 를 확보 해 야 한다.
생각:
  •   동시에 두 개의 링크 의 각자 결산 점
  • 을 옮 겨 다 닌 다.
  •   값 을 비교 하여 어느 값 이 작 으 면 새로운 링크 에 넣 습 니 다
  •   배치 하 는 방식 은 꼬리 삽입 입 니 다. 하나의 링크 중의 모든 노드 를 가 져 간 후에 나머지 링크 의 노드 를 결과 링크 에 직접 연결 하면 됩 니 다
  • .
    OK, 생각 을 말 하고 코드 를 봅 니 다.
    package com.bittech;
    
    /**
     * Author:weiwei
     * description:        
     * Creat:2019/5/6
     **/
    public class MergeList {
    
        public class ListNode{
            int val;
            ListNode next;
    
            ListNode(int x){
                val = x;
            }
        }
        private static ListNode Merge(ListNode listA,ListNode listB){
            if(listA == null){
                return listB;
            }
            if(listB == null){
                return listA;
            }
    
            /**
             *            ,         
             *              ,      ,           
             *         
             *               ,                    
             */
    
            ListNode result = null;  //                  ,   null
            ListNode last = null;    //             
            ListNode nA = listA;
            ListNode nB = listB;
            //           
            while(nA != null && nB != null){
                if(nA.val <= nB.val){
                    if(result == null){
                        result = nA;
                    }else{
                        last.next = nA;
                    }
                    //last    
                    last = nA;
                    nA = nA.next;
                }else{
                    if(result == null){
                        result = nB;
                    }else{
                        last.next = nB;
                    }
                    //last    
                    last = nB;
                    nB = nB.next;
                }
            }
            //            
            if(nA != null){
                //nA           
                last.next = nA;
            }else{
                //nB          
                last.next = nB;
            }
            return result;
        }
    }
    

    좋은 웹페이지 즐겨찾기