问题 G: 两个稀疏多项式相加

写一个算法,实现两个稀疏多项式相加。
本题源于教材第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;

     

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值