使用线性表实现两个一元n次多项式求和。1,<>
时间: 2024-02-11 15:04:45 浏览: 95
好的,让我来回答你的问题。
实现两个一元n次多项式的求和,可以采用线性表的顺序存储结构,具体步骤如下:
1. 定义一个结构体表示多项式,包含两个成员:系数和指数。
```
struct Term {
float coef; // 系数
int expn; // 指数
};
```
2. 定义一个线性表结构体,用于存储多项式,包含三个成员:多项式的名称、多项式的项数、多项式的项数组。
```
struct Polynomial {
char name; // 多项式名称
int length; // 多项式项数
Term terms[MAXSIZE]; // 多项式项数组
};
```
3. 实现输入多项式的函数,读取用户输入的系数和指数,存储到多项式的项数组中。
```
void inputPolynomial(Polynomial &p) {
cout << "请输入多项式" << p.name << "的项数:";
cin >> p.length;
for (int i = 0; i < p.length; i++) {
cout << "请输入多项式" << p.name << "的第" << i + 1 << "项的系数和指数:";
cin >> p.terms[i].coef >> p.terms[i].expn;
}
}
```
4. 实现两个多项式的求和函数,遍历两个多项式的项数组,将指数相同的项的系数相加,结果存储到新的多项式中。
```
void addPolynomial(Polynomial a, Polynomial b, Polynomial &c) {
int i = 0, j = 0, k = 0;
while (i < a.length && j < b.length) {
if (a.terms[i].expn == b.terms[j].expn) {
float sum = a.terms[i].coef + b.terms[j].coef;
if (sum != 0) {
c.terms[k].coef = sum;
c.terms[k].expn = a.terms[i].expn;
k++;
}
i++;
j++;
} else if (a.terms[i].expn > b.terms[j].expn) {
c.terms[k].coef = a.terms[i].coef;
c.terms[k].expn = a.terms[i].expn;
k++;
i++;
} else {
c.terms[k].coef = b.terms[j].coef;
c.terms[k].expn = b.terms[j].expn;
k++;
j++;
}
}
while (i < a.length) {
c.terms[k].coef = a.terms[i].coef;
c.terms[k].expn = a.terms[i].expn;
k++;
i++;
}
while (j < b.length) {
c.terms[k].coef = b.terms[j].coef;
c.terms[k].expn = b.terms[j].expn;
k++;
j++;
}
c.length = k;
}
```
5. 在主函数中调用上述函数,输入两个多项式,求和,并输出结果。
```
int main() {
Polynomial a = {'A', 0, {}};
Polynomial b = {'B', 0, {}};
Polynomial c = {'C', 0, {}};
inputPolynomial(a);
inputPolynomial(b);
addPolynomial(a, b, c);
cout << "多项式A:";
printPolynomial(a);
cout << "多项式B:";
printPolynomial(b);
cout << "多项式C=A+B:";
printPolynomial(c);
return 0;
}
```
完整代码如下:
阅读全文