写一个算法,实现两个稀疏多项式相加。
本题源于教材第46页的案例2.2。
在不完整程序中,请将AddPolyn()定义完整。函数首部:void AddPolyn(Polynomial &Pa,Polynomial &Pb)
输入
第一行请输入多项式Pa的项数n
然后输入n行,每行输入一项多项式Pa的系数和指数,中间用一个空格隔开
第n+2行请输入多项式Pb的项数m
然后输入m行,每行输入一项多项式Pb的系数和指数,中间用一个空格隔开
输出
依照如下格式输出多项式Pa和Pb相加后的结果:
(7) * x^0 + (11) * x^1 + (22) * x^7 + (5) * x^17
样例输入 Copy
4 7 0 3 1 9 8 5 17 3 8 1 22 7 -9 8
样例输出 Copy
(7) * x^0 + (11) * x^1 + (22) * x^7 + (5) * x^17
void AddPolyn(Polynomial &Pa,Polynomial &Pb)
{
Polynomial p1=NULL,p2=NULL,p3=NULL,r=NULL;
int sum;
p1=Pa->next;
p2=Pb->next;
p3=Pa;
while(p1&&p2)
{
if(p1->expn==p2->expn)
{
sum=p1->coef+p2->coef;
if(sum!=0)
{
p1->coef=sum;
p3->next=p1;
p3=p1;
p1=p1->next;
r=p2;
p2=p2->next;
delete r;
}
else
{
r=p1;
p1=p1->next;
delete r;
r=p2;
p2=p2->next;
delete r;
}
}
else if(p1->expn<p2->expn)
{
p3->next=p1;
p3=p1;
p1=p1->next;
}
else
{
p3->next=p2;
p3=p2;
p2=p2->next;
}
}
p3->next=p1?p1:p2;
delete Pb;
}