一元稀疏多项式的相加减的完整代码数据结构C++
时间: 2024-08-13 11:07:03 浏览: 44
在C++中,处理一元稀疏多项式(sparse polynomial)的相加减通常涉及到使用哈希表或动态数组存储系数和指数。这里是一个简单的概念性示例,展示了如何使用`std::unordered_map`作为数据结构来表示稀疏多项式以及基本的相加减操作:
```cpp
#include <iostream>
#include <unordered_map>
// 定义稀疏多项式的数据结构
class SparsePolynomial {
public:
// 添加一个项到多项式
void addTerm(int coefficient, int exponent) {
coefficients_[exponent] += coefficient;
}
// 从多项式中移除一个项
void subtractTerm(int coefficient, int exponent) {
if (coefficients_.find(exponent) != coefficients_.end()) {
coefficients_[exponent] -= coefficient;
if (coefficients_[exponent] == 0) {
coefficients_.erase(exponent);
}
}
}
// 打印多项式
void print() const {
for (const auto& pair : coefficients_) {
std::cout << pair.first << "^" << pair.second << ": " << pair.second << " ";
}
std::cout << "\n";
}
private:
// 使用无序映射存储系数和对应的指数
std::unordered_map<int, int> coefficients_;
};
int main() {
SparsePolynomial p1, p2, result;
// 初始化多项式
p1.addTerm(2, 1); // 2x^1
p1.addTerm(3, 2); // 3x^2
p2.addTerm(-1, 0); // -1x^0
p2.addTerm(4, 3); // 4x^3
// 相加
result = p1;
result.addTerm(p2.coefficients_, 0); // p2的常数项
for (const auto& [exponent, coefficient] : p2.coefficients_) {
if (exponent > 0) {
result.addTerm(coefficient, exponent);
}
}
result.print() << " (p1 + p2)";
// 相减
result = p1;
result.subtractTerm(p2.coefficients_, 0); // p2的常数项
for (const auto& [exponent, coefficient] : p2.coefficients_) {
if (exponent > 0) {
result.subtractTerm(coefficient, exponent);
}
}
result.print() << " (p1 - p2)";
return 0;
}
```