#include using namespace std;

struct Node { int coef; // 系数 int exp; // 指数 Node* next; // 下一个节点指针 };

Node* createPoly() { Node* head = new Node(); head->next = nullptr; Node* tail = head; int n; cout << "请输入多项式的项数:"; cin >> n; cout << "请按照指数从大到小的顺序输入多项式的系数和指数,每行输入一项:" << endl; for (int i = 0; i < n; i++) { int coef, exp; cin >> coef >> exp; Node* node = new Node(); node->coef = coef; node->exp = exp; node->next = nullptr; tail->next = node; tail = node; } return head; }

void printPoly(Node* head) { Node* p = head->next; while (p) { cout << p->coef << "x^" << p->exp; p = p->next; if (p) { cout << " + "; } } cout << endl; }

Node* addPoly(Node* p1, Node* p2) { Node* head = new Node(); head->next = nullptr; Node* tail = head; Node* p = p1->next; Node* q = p2->next; while (p && q) { if (p->exp > q->exp) { Node* node = new Node(); node->coef = p->coef; node->exp = p->exp; node->next = nullptr; tail->next = node; tail = node; p = p->next; } else if (p->exp < q->exp) { Node* node = new Node(); node->coef = q->coef; node->exp = q->exp; node->next = nullptr; tail->next = node; tail = node; q = q->next; } else { Node* node = new Node(); node->coef = p->coef + q->coef; node->exp = p->exp; node->next = nullptr; tail->next = node; tail = node; p = p->next; q = q->next; } } while (p) { Node* node = new Node(); node->coef = p->coef; node->exp = p->exp; node->next = nullptr; tail->next = node; tail = node; p = p->next; } while (q) { Node* node = new Node(); node->coef = q->coef; node->exp = q->exp; node->next = nullptr; tail->next = node; tail = node; q = q->next; } return head; }

int main() { cout << "请输入第一个多项式:" << endl; Node* p1 = createPoly(); cout << "第一个多项式为:"; printPoly(p1); cout << "请输入第二个多项式:" << endl; Node* p2 = createPoly(); cout << "第二个多项式为:"; printPoly(p2); Node* p3 = addPoly(p1, p2); cout << "两个多项式的和为:"; printPoly(p3); return 0; }

用c++写一段代码把任意给定的两个一元多项式Px Qx 输入计算机计算它们的和并输出计算结果一元多项式用单链表表示

原文地址: https://www.cveoy.top/t/topic/bJn0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录