сортировка вставки списка ссылок и уменьшение полиномов c ++ - PullRequest
0 голосов
/ 14 ноября 2011

Я пишу эту программу, имеющую дело с полиномами.У меня проблемы с последней частью моего задания.Мне нужно отсортировать многочлены по степеням, а затем иметь возможность уменьшить многочлен, если в многочлене есть двойная степень.Код, который я написал ниже, имеет ошибку сегментации для обеих функций.В моем void reduce(poly &p1) моя ошибка возникает в zc= zc->next.Есть ли другой способ приблизиться к выполнению этих функций?плюс я использую списки ссылок для моих полиномов

class Poly{
private :
  struct term{
    double coef ;
    unsigned exp ;
    term *next ;
  } *term_t ;
public :
  Poly( ) ;
  void insert ( float c, int e ) ;
  void isort( Poly &p1);
  void reduce (Poly &p1);
  ~Poly( ) ;
} ;
void Poly :: isort ( Poly & p1){
  term *z;
  term * zc;
  term *c;
  if ( term_t == NULL && p1.term_t == NULL )
    return ;
  while (p1.term_t != NULL){
    c=p1.term_t;
    p1.term_t = p1.term_t->next;
    while (p1.term_t!=NULL && c->exp > zc->exp){
      z->coef = c->coef;
      z->exp=c->exp;
      c=c->next;
    }
    z.printPoly();
    zc->exp = z->exp;
    z=z->next;
    //c=c->next;
  }
}
void Poly :: reduce (Poly & p1){
  term *z ;
  if ( term_t == NULL && p1.term_t == NULL )
    return ;
  term *temp1;
  temp1 = p1.term_t ;
  while ( temp1 != NULL ){
    if ( term_t == NULL ){
      term_t = new term ;
      z = term_t ;
    }
    else{
      z -> next = new term ;
      z = z -> next ;
    }
    if (temp1 -> exp == z->exp)
      temp1->coef= temp1-> coef + z->coef;
    z->coef = temp1 -> coef;
    z->exp = temp1->exp;
    temp1=temp1->next;
  }
  while ( temp1 != NULL ){
    if ( term_t == NULL ){
      term_t = new term ;
      z = term_t ;
    }
    else{
      z -> next = new term ;
      z = z -> next ;
    }
    z -> coef = temp1 -> coef ;
    z -> exp = temp1 -> exp ;
    temp1 = temp1 -> next ;
  }
  z -> next = NULL ;
}

1 Ответ

0 голосов
/ 14 ноября 2011

Вы можете использовать std::list или std::vector или какой-либо другой контейнер STL

...