在多项式链表

时间:2017-04-25 18:02:16

标签: c++ visual-c++

所以我试图在单个链表中重载+运算符问题是我的程序每次尝试运行代码时崩溃。在我的代码中我试图用相同的指数添加系数。以防万一指数不相等我试图将不同的两个项添加到结果多项式中。 insert函数按照从较高指数到较低指数的排序顺序添加术语

 polynomials polynomials:: operator + (const polynomials&p )const{
 node*current=head;
 node*temp=p.head;
 polynomials poly;
 node *newnode=0;
 while(current!=0||temp!=0)
 {
    if(current->exponent==temp->exponent)
    {
       newnode->exponent=current->exponent;
        newnode->coefficient=current->coefficient+temp->coefficient;
        poly.insert(*newnode);
        newnode=newnode->link;
    }
    else
    {
        if(current->exponent > temp->exponent)
      { newnode->exponent=current->exponent;
        newnode->coefficient=current->coefficient;
        poly.insert(*newnode);
        newnode=newnode->link;    
        newnode->exponent=temp->exponent;
        newnode->coefficient=temp->coefficient;
        poly.insert(*newnode);
        }
        else
        {

        newnode->exponent=temp->exponent;
        newnode->coefficient=temp->coefficient;
        poly.insert(*newnode);
        newnode=newnode->link;    
        newnode->exponent=current->exponent;
        newnode->coefficient=current->coefficient;
        poly.insert(*newnode);


        }

    }
    current=current->link;
    temp=temp->link;
 }

 return poly;}

1 个答案:

答案 0 :(得分:2)

我看到的一个问题。

while(current!=0||temp!=0) 

接着是

if(current->exponent==temp->exponent)

不对。如果其中一个指针为nullptr,则最终取消引用nullptr

我会尝试

while(current != nullptr && temp != nullptr)