c++一元多项式加法运算代码
时间: 2023-12-10 16:32:49 浏览: 70
以下是C++一元多项式加法运算的代码,使用线性链表存储多项式:
```c++
#include <iostream>
using namespace std;
struct PolyNode {
int coef; // 系数
int expn; // 指数
PolyNode* next; // 指向下一个节点的指针
};
typedef PolyNode* Polynomial; // 多项式类型定义
// 创建多项式
void CreatePolyn(Polynomial& P, int m) {
P = new PolyNode;
P->next = NULL;
PolyNode* rear = P;
for (int i = 0; i < m; i++) {
PolyNode* temp = new PolyNode;
cin >> temp->coef >> temp->expn;
temp->next = NULL;
rear->next = temp;
rear = temp;
}
}
// 多项式相加
void AddPolyn(Polynomial& Pa, Polynomial& Pb) {
PolyNode* p = Pa->next;
PolyNode* q = Pb->next;
PolyNode* r = Pa;
while (p && q) {
if (p->expn < q->expn) {
r->next = p;
r = p;
p = p->next;
}
else if (p->expn > q->expn) {
r->next = q;
r = q;
q = q->next;
}
else {
p->coef += q->coef;
if (p->coef != 0) {
r->next = p;
r = p;
}
else {
PolyNode* temp = p;
p = p->next;
delete temp;
}
q = q->next;
}
}
r->next = p ? p : q;
delete Pb;
}
// 输出多项式
void PrintPolyn(Polynomial P) {
PolyNode* p = P->next;
while (p) {
cout << p->coef << "x^" << p->expn;
if (p->next) {
cout << " + ";
}
p = p->next;
}
cout << endl;
}
int main() {
Polynomial Pa, Pb, Pc;
int m, n;
cout << "请输入多项式Pa的项数:";
cin >> m;
cout << "请依次输入Pa的系数和指数:";
CreatePolyn(Pa, m);
cout << "请输入多项式Pb的项数:";
cin >> n;
cout << "请依次输入Pb的系数和指数:";
CreatePolyn(Pb, n);
AddPolyn(Pa, Pb);
cout << "Pa + Pb = ";
PrintPolyn(Pa);
return 0;
}
```