用C++编写 用线性表设计一个完整的程序实现多项式的乘法
时间: 2024-10-16 11:09:45 浏览: 51
在C++中,我们可以使用动态数组或链表来实现多项式乘法的算法。这里我们使用动态数组(vector)作为数据结构,因为它方便处理固定大小的元素集合。下面是一个简单的示例程序,展示了如何计算两个一元多项式的乘积:
```cpp
#include <iostream>
#include <vector>
// 定义多项式类
class Polynomial {
private:
std::vector<int> coefficients; // 系数向量
public:
// 构造函数和加减运算
Polynomial(const std::vector<int>& coeffs) : coefficients(coeffs) {}
void display() const {
for (size_t i = 0; i < coefficients.size(); ++i)
if (coefficients[i] != 0)
std::cout << coefficients[i] << "x^" << i << " + ";
std::cout << "0" << std::endl;
}
// 用于多项式乘法
Polynomial multiply(Polynomial other) const {
Polynomial result(0);
for (size_t i = 0; i < coefficients.size(); ++i) {
for (size_t j = 0; j < other.coefficients.size(); ++j) {
result.coefficients.push_back(coefficients[i] * other.coefficients[j]);
result.coefficients[result.coefficients.size() - 1 - j] += result.coefficients.back();
}
}
return result.trim(); // 移除末尾多余的零项
}
private:
Polynomial trim() const {
Polynomial trimmed;
bool hasNonZero = false;
for (int c : coefficients) {
if (c != 0) {
hasNonZero = true;
trimmed.coefficients.push_back(c);
} else if (hasNonZero) {
break;
}
}
return trimmed;
}
};
int main() {
Polynomial p1({2, 3, 1}); // 2x^2 + 3x + 1
Polynomial p2({4, 5, 6}); // 4x^2 + 5x + 6
Polynomial product = p1.multiply(p2);
std::cout << "Product of the polynomials is:\n";
product.display();
return 0;
}
```
这个程序首先定义了一个`Polynomial`类,包含系数向量和一些基本操作,如显示多项式、乘法以及移除末尾零项。在`main()`函数里,创建了两个多项式并相乘,然后打印出结果。
阅读全文