[힘줄 c 언어 실현] 21.두 개의 질서정연한 체인 테이블 병합

21. 두 개의 질서정연한 체인 테이블을 합친다

  • 1. 제목 설명
  • 2.코드는 아래와 같다
  • 원제 연결

    1. 제목 설명


    두 개의 질서 체인 테이블을 하나의 새로운 질서 체인 테이블로 합쳐서 되돌려줍니다.새 체인 시계는 두 개의 체인 시계의 모든 노드를 연결하여 구성된 것이다.
    예:
    입력: 1->2->4, 1->3->4 출력: 1->1->2->3->4->4

    2. 코드는 다음과 같다.

    //2018-11-17-20:22
    /**
    * Definition for singly-linked list.
    * struct ListNode {
    *     int val;
    *     struct ListNode *next;
    * };
    */
    
    //   :           ,          
    struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
       typedef struct ListNode list;
        list *p1 = l1;
        list *p2 = l2;
        int size = 0;
        if(p1==NULL)//    p1、p2 null   
        {
            return p2;
        }
        if(p2==NULL)
        {
            return p1;
        }
        
        while(p1->next!=NULL)
        {
            p1 = p1->next;
        }//  p1  l1        
        
        p1->next = p2;//            
        p1 = l1;//p1      
        while(p1!=NULL)
        {
            size++;
            p1 = p1->next;
        }
        
        p1 = l1;
        int *arrary = malloc(sizeof(int)*size);
        memset(arrary,0,sizeof(int)*size);
        for(int i = 0;i<size;i++)
        {
            arrary[i] = p1->val;
            p1 = p1->next;
        }//               
        
        //      
        for(int i = 0;i<size;i++)
        {
            for(int j = i +1;j<size;j++)
            {
                if(arrary[i]>arrary[j])
                {
                    int temp = arrary[i];
                    arrary[i] = arrary[j];
                    arrary[j] = temp;
                    
                }
            }
        }
        
        p1 = l1;
        int i = 0;
        while(p1!=NULL&&i<size)
        {
            p1->val = arrary[i++];
            p1 = p1->next;
        }
        return l1;
        
    }
    ```c
    

    좋은 웹페이지 즐겨찾기