一、前言
本文学自王卓老师的《数据结构》
二、内容
一元多项式的运算:实现两个多项式的相加运算
图一
如图一,线性表的每一项指数都隐藏在了系数Pi中了。如第一项P0的指数就是0
例子:P3(x)=2+3x+4x^2。对于第一个的系数2,其指数为0,第二个系数3,指数则为1,第三个系数4,指数则为2。也即是说,指数从0开始算起,往后不断加1。
图二
那么,两个正常的一元多项式如何相加呢?
如下例。
(1)对于指数为0的第一项,系数相加,10+(-3)=7
(2)对于指数为1的第二项,系数相加,5+8=13
(3)对于指数为2的第三项,系数相加,-4+4=0
(4)对于指数为3的第四项,系数相加,3+0=3(另一个多项式未出现的项,其系数为0)
(5)对于指数为4的第五项,系数相加,2+(-5)=-3
(6)对于指数为5的第六项,系数相加,0+7=7
(7)对于指数为6的第七项,系数相加,0+(-2)=-2
图三
图四
三、代码实现
注:本文的指数依次累加,不能跳,即便是没有,也要输入系数0
如上例Pb,没有x^3,但是也要输入0,即-3 8 4 0 -5 7 -2
#include <iostream>
using namespace std;
int main()
{
int a[30]={0}, b[30]={0};
int n,m;
cout << "请输入多项式A项的个数" << endl;
cin >> n;
cout << "输入每个项的系数" << endl;
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
cout << "请输入多项式B项的个数" << endl;
cin >> m;
cout << "输入每个项的系数" << endl;
for (int i = 0; i < m; i++)
{
cin >> b[i];
}
int sum = n > m ? n : m;
for (int i = 0; i < sum; i++)
{
a[i] += b[i];
}
cout << "相加后的多项式为" << endl;
for (int i = 0; i < sum; i++)
cout << a[i] << endl;
}
四、测试结果
图五