c++利用线性表的链式存储结构实现多项式的相加完整程序
时间: 2024-10-06 19:04:55 浏览: 4
在C++中,利用链式存储结构实现多项式的相加,我们通常会创建一个节点类来表示多项式的每一项,包括系数和指数。以下是简单的步骤和一个基础的代码示例:
```cpp
#include <iostream>
using namespace std;
// 定义多项式的节点类
class Term {
public:
int coef; // 系数
int exp; // 指数
Term(int c = 0, int e = 0) : coef(c), exp(e) {} // 构造函数
};
// 多项式类,用于存储和操作链表
class Polynomial {
private:
struct Node {
Term term;
Node* next;
} *head;
public:
Polynomial() : head(nullptr) {}
void addTerm(Term t) {
if (!head) {
head = new Node{t, nullptr};
}
else {
Node* current = head;
while (current->next && current->term.exp > t.exp) {
current = current->next;
}
if (current->term.exp == t.exp) {
current->coef += t.coef;
}
else {
current->next = new Node{t, current->next};
}
}
}
// 添加多项式相加功能(这里简化了显示部分)
void add(Polynomial& other) {
for (Node* p = other.head; p; p = p->next) {
addTerm(p->term);
}
}
void display() {
if (!head) return;
cout << "Polynomial: ";
Node* current = head;
while (current) {
cout << current->term.coef << "x^" << current->term.exp << " + ";
current = current->next;
}
cout << "0" << endl;
}
};
int main() {
Polynomial p1;
p1.addTerm({2, 1}); // 2x^1
p1.addTerm({3, 2}); // 3x^2
Polynomial p2;
p2.addTerm({4, 0}); // 4x^0 (相当于常数项)
p2.addTerm({1, 3}); // 1x^3
p1.add(p2); // 相加
p1.display(); // 输出结果
return 0;
}
```
这个程序首先定义了一个`Term`类来存储系数和指数,然后在`Polynomial`类中实现了链表的添加、显示功能以及两个多项式的相加。`addTerm`函数负责将新的项插入到链表的适当位置,`add`函数则遍历另一个多项式并将每个项加入。