2012-10-09 33 views
0

我想要做的第一步是檢查deg並將其置於最低到最高...然後執行第二次通過並且執行coef並將其從最低到最高。C++合併兩個通道以顯示從最低到最高的多項式

我得到段錯誤。我想知道,如果兩個if語句,甚至有可能

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

爲什麼不排序呢?這似乎有點多餘。 – Annabelle

+0

您可能會遇到分段錯誤,因爲它似乎(對我)應該檢查* pp-> next/pp值以驗證它不爲空。 – M4rc

+0

刪除棄用的作業標籤 –

回答

0

NVM我想我找到了我的問題。我需要將它做成如果一個。 ..else if語句,併爲那些快速響應刪除

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

塊之一

感謝反正

更新:

我也需要通過係數來改變

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

if(list2->coef < list1->coef)