利用链表编写两个一元多项式,编写程序实现两个一元多项式的相加,要主函数和函数的调用
时间: 2024-05-05 10:20:01 浏览: 108
好的,我可以为您提供代码示例:
```c++
#include <iostream>
using namespace std;
// 定义一个结构体表示一元多项式的一个项
struct Term {
int coef; // 系数
int exp; // 指数
Term* next; // 下一项的指针
};
// 创建一个新的项
Term* createTerm(int coef, int exp) {
Term* term = new Term;
term->coef = coef;
term->exp = exp;
term->next = NULL;
return term;
}
// 在链表中插入一个新的项
void insertTerm(Term*& head, int coef, int exp) {
if (head == NULL) {
head = createTerm(coef, exp);
} else {
Term* p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = createTerm(coef, exp);
}
}
// 输出一个一元多项式
void printPolynomial(Term* head) {
if (head == NULL) {
cout << "0" << endl;
return;
}
Term* p = head;
while (p != NULL) {
cout << p->coef << "x^" << p->exp;
if (p->next != NULL) {
cout << " + ";
}
p = p->next;
}
cout << endl;
}
// 相加两个一元多项式
Term* addPolynomials(Term* p1, Term* p2) {
Term* head = NULL;
while (p1 != NULL && p2 != NULL) {
if (p1->exp > p2->exp) {
insertTerm(head, p1->coef, p1->exp);
p1 = p1->next;
} else if (p1->exp < p2->exp) {
insertTerm(head, p2->coef, p2->exp);
p2 = p2->next;
} else {
int coef = p1->coef + p2->coef;
insertTerm(head, coef, p1->exp);
p1 = p1->next;
p2 = p2->next;
}
}
while (p1 != NULL) {
insertTerm(head, p1->coef, p1->exp);
p1 = p1->next;
}
while (p2 != NULL) {
insertTerm(head, p2->coef, p2->exp);
p2 = p2->next;
}
return head;
}
int main() {
// 创建第一个一元多项式
Term* p1 = NULL;
insertTerm(p1, 2, 3);
insertTerm(p1, 4, 2);
insertTerm(p1, 3, 1);
insertTerm(p1, 1, 0);
cout << "第一个一元多项式:";
printPolynomial(p1);
// 创建第二个一元多项式
Term* p2 = NULL;
insertTerm(p2, 3, 4);
insertTerm(p2, 1, 3);
insertTerm(p2, 2, 2);
insertTerm(p2, 5, 0);
cout << "第二个一元多项式:";
printPolynomial(p2);
// 相加两个一元多项式
Term* result = addPolynomials(p1, p2);
cout << "相加后的一元多项式:";
printPolynomial(result);
return 0;
}
```
这段代码实现了两个一元多项式的相加,其中 `Term` 表示一个项,`createTerm` 函数用于创建一个新的项,`insertTerm` 函数用于在链表中插入一个新的项,`printPolynomial` 函数用于输出一个一元多项式,`addPolynomials` 函数用于相加两个一元多项式,`main` 函数中展示了如何使用这些函数。
阅读全文