0

私がやりたいのは、最初のパスを通過して度をチェックし、それを最低から最高に配置することです...次に、2番目のパスを実行し、係数を実行して、その最低から最高に配置します。

セグメンテーション違反が発生しています...2つの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;
}
4

1 に答える 1

0

NVM問題が見つかったと思います...それをif...else ifステートメントにして、いずれかを削除する必要がありました

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

ブロック

とにかくそれらの速い応答者に感謝します

アップデート:

また、私は変更する必要がありました

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

if(list2->coef < list1->coef)
于 2012-10-09T02:06:53.040 に答える