用数据结构编写两多项式相乘代码
时间: 2023-08-04 09:36:28 浏览: 96
以下是使用数组实现两多项式相乘的代码示例(假设两个多项式 P(x) 和 Q(x) 的系数已经存储在两个数组 A 和 B 中,乘积多项式 R(x) 的系数存储在数组 C 中):
```c++
int n = A.size();
int m = B.size();
vector<int> C(n + m, 0); // 初始化数组 C
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
C[i+j] += A[i] * B[j]; // 计算乘积并加到数组 C 的相应项上
}
}
// 输出乘积多项式 R(x) 的系数
for (int i = 0; i < n + m - 1; i++) {
cout << C[i] << " ";
}
cout << C[n + m - 1] << endl; // 注意最后一项不需要输出空格
```
以下是使用链表实现两多项式相乘的代码示例(假设两个多项式 P(x) 和 Q(x) 的系数已经存储在两个链表 A 和 B 中,乘积多项式 R(x) 的所有项存储在链表 C 中):
```c++
// 定义多项式中的一项
struct Term {
int coef; // 系数
int exp; // 指数
Term* next; // 指向下一项的指针
};
// 将多项式中的一项插入到链表中
void insertTerm(Term*& head, int coef, int exp) {
Term* term = new Term;
term->coef = coef;
term->exp = exp;
term->next = NULL;
if (head == NULL) {
head = term;
} else {
Term* p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = term;
}
}
Term* A = NULL; // 多项式 P(x)
Term* B = NULL; // 多项式 Q(x)
Term* C = NULL; // 乘积多项式 R(x)
// 枚举多项式 P(x) 和 Q(x) 中的每一项,计算对应的乘积并插入到乘积多项式 R(x) 中
for (Term* p = A; p != NULL; p = p->next) {
for (Term* q = B; q != NULL; q = q->next) {
int coef = p->coef * q->coef; // 计算乘积的系数
int exp = p->exp + q->exp; // 计算乘积的指数
insertTerm(C, coef, exp); // 将乘积插入到链表 C 中
}
}
// 输出乘积多项式 R(x)
for (Term* p = C; p != NULL; p = p->next) {
cout << p->coef << "x^" << p->exp << " + ";
}
cout << "0" << endl; // 注意最后一项不需要输出“+”号
```
需要注意的是,以上代码仅为示例,实际使用时需要根据具体情况进行修改和调试。
阅读全文