所以我试图在单个链表中重载+运算符问题是我的程序每次尝试运行代码时崩溃。在我的代码中我试图用相同的指数添加系数。以防万一指数不相等我试图将不同的两个项添加到结果多项式中。 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;}
答案 0 :(得分:2)
我看到的一个问题。
while(current!=0||temp!=0)
接着是
if(current->exponent==temp->exponent)
不对。如果其中一个指针为nullptr
,则最终取消引用nullptr
。
我会尝试
while(current != nullptr && temp != nullptr)