2012-10-09 2 views
0

내가 원하는 것은 deg를 확인하고 가장 낮은 값부터 가장 높은 값까지 넣는 것입니다. 그런 다음 두 번째 패스를 수행하고 coef를 수행합니다. 그리고 그것을 가장 높은 것에서 가장 높은 것까지 놓아 라. 두 문장의 경우에도 가능하면C++ mergesort 두 패스로 다항식을 가장 낮은 것부터 가장 높은 것 순으로 표시

나는 세그먼트 오류를 ​​받고 있어요 ... 궁금

Poly merge(Poly* plist1,Poly* plist2){ 
    Term **pp; 
    Poly merged,list1,list2; 
    merged = new_Term(); //function for new term in another file 
    list1 = *plist1; 
    list2 = *plist2; 
    pp= &merged; 
    while(list1 != NULL && list2 != NULL){ 
    if(list2->deg < list1->deg) 
     { 
     *pp = list1; 
     list1 = list1->next; 
     (*pp)->next = NULL; 
     } 
    else 
     { 
     *pp = list2; 
     list2 = list2->next; 
     (*pp)->next = NULL; 
     } 
    if(list2->coef < list1->coef) 
     { 
     *pp = list1; 
     list1 = list1->next; 
     (*pp)->next = NULL; 
     } 
    else 
     { 
     *pp = list2; 
     list2 = list2->next; 
     (*pp)->next = NULL; 
     } 
    pp = &((*pp)->next); 

    } 
    if(list1 != NULL) 
    *pp = list1; 
    if(list2 != NULL) 
    *pp = list2; 

    *plist1 = NULL; 
    *plist2 = NULL; 
    return merged; 
} 
+0

왜 그냥 일종의 그것을

if(list2->deg > list1->deg) 

을 변경해야? 그것은 다소 중복 된 것처럼 보입니다. – Annabelle

+0

세그먼트 오류가 발생했을 가능성이 있습니다 (나에게) * pp-> next/pp 값을 검사하여 null이 아닌지 확인해야합니다. – M4rc

+0

사용되지 않는 숙제 태그 제거 –

답변

0

NVM 나는 내가 만약에 그것을 만드는 데 필요한 ... 나는 내 문제를 찾은 것 같아요. 문 및 그 빠른 대응을 위해

감사 어쨌든

else 
    { 
    *pp = list2; 
    list2 = list2->next; 
    (*pp)->next = NULL; 
    } 

블록 중 하나를 삭제하면 ..else

업데이트 :

또한 내가 계수

if(list2->coef < list1->coef) 
관련 문제