A和B大小是不知道的
时间: 2024-02-21 10:00:35 浏览: 19
好的,如果A和B的大小不确定,我们可以修改之前的代码,在输入多项式时,先输入多项式的项数n,然后输入n个系数。这样就可以动态地创建多项式了。修改后的代码如下:
```c++
Node* create_polynomial() {
int n;
cin >> n;
if (n == 0) {
return nullptr;
}
int* coeffs = new int[n];
for (int i = 0; i < n; i++) {
cin >> coeffs[i];
}
Node* head = new Node;
head->coefficient = coeffs[0];
head->exponent = n - 1;
head->next = nullptr;
Node* p = head;
for (int i = 1; i < n; i++) {
Node* q = new Node;
q->coefficient = coeffs[i];
q->exponent = n - i - 1;
q->next = nullptr;
p->next = q;
p = q;
}
delete[] coeffs;
return head;
}
Node* add_polynomial(Node* A, Node* B) {
Node* C = merge(A, B);
C = sort(C);
Node* p = C;
while (p != nullptr && p->next != nullptr) {
if (p->exponent == p->next->exponent) {
p->coefficient += p->next->coefficient;
Node* q = p->next;
p->next = q->next;
delete q;
} else {
p = p->next;
}
}
return C;
}
```
在主函数中,我们可以这样输入两个多项式:
```c++
int main() {
cout << "请输入多项式A:" << endl;
Node* A = create_polynomial();
cout << "请输入多项式B:" << endl;
Node* B = create_polynomial();
Node* C = add_polynomial(A, B);
cout << "A + B = ";
print_polynomial(C);
return 0;
}
```
这样,我们就可以动态地输入多项式,并计算它们的和了。