生成一段代码使用单链表实现多项式的存储与运算
时间: 2023-05-22 11:02:59 浏览: 69
以下是一段使用单链表实现多项式的存储与运算的代码示例:
```c++
#include <iostream>
using namespace std;
struct PolyNode {
int coef; // 系数
int expon; // 指数
PolyNode *next; // 下一个节点指针
};
typedef PolyNode *PolyList; // 用PolyList表示单链表
// 创建多项式链表,输入项数n和n个系数及指数
PolyList CreatePoly(int n) {
PolyList p, q, head;
head = new PolyNode;
head->next = NULL;
q = head;
for (int i=0; i<n; i++) {
p = new PolyNode;
cin >> p->coef >> p->expon;
p->next = NULL;
q->next = p;
q = p;
}
return head;
}
// 打印多项式
void PrintPoly(PolyList p) {
PolyNode *q = p->next;
while (q) {
cout << q->coef << "x^" << q->expon;
if (q->next) cout << " + ";
q = q->next;
}
cout << endl;
}
// 多项式相加
PolyList AddPoly(PolyList A, PolyList B) {
PolyNode *pa = A->next, *pb = B->next;
PolyList C, pc, pc_pre;
C = new PolyNode;
C->next = NULL;
pc = C;
while (pa && pb) {
if (pa->expon == pb->expon && pa->coef+pb->coef != 0) {
PolyNode *pc_new = new PolyNode;
pc_new->coef = pa->coef + pb->coef;
pc_new->expon = pa->expon;
pc_new->next = NULL;
pc->next = pc_new;
pc_pre = pc;
pc = pc_new;
pa = pa->next;
pb = pb->next;
} else if (pa->expon > pb->expon) {
PolyNode *pc_new = new PolyNode;
pc_new->coef = pa->coef;
pc_new->expon = pa->expon;
pc_new->next = NULL;
pc->next = pc_new;
pc_pre = pc;
pc = pc_new;
pa = pa->next;
} else {
PolyNode *pc_new = new PolyNode;
pc_new->coef = pb->coef;
pc_new->expon = pb->expon;
pc_new->next = NULL;
pc->next = pc_new;
pc_pre = pc;
pc = pc_new;
pb = pb->next;
}
}
if (pb) pa = pb;
while (pa) {
PolyNode *pc_new = new PolyNode;
pc_new->coef = pa->coef;
pc_new->expon = pa->expon;
pc_new->next = NULL;
pc->next = pc_new;
pc_pre = pc;
pc = pc_new;
pa = pa->next;
}
pc_pre->next = NULL; // 将C多项式末尾节点指针置NULL
return C;
}
int main() {
PolyList A, B, C;
int n, m;
cin >> n;
A = CreatePoly(n);
cin >> m;
B = CreatePoly(m);
cout << "A(x) = ";
PrintPoly(A);
cout << "B(x) = ";
PrintPoly(B);
C = AddPoly(A, B);
cout << "C(x) = A(x) + B(x) = ";
PrintPoly(C);
return 0;
}
```
该代码使用了C++语言,可实现输入系数和指数来创建多项式链表,并实现多项式的相加。代码中结构体PolyNode表示每个多项式的单项式,指针PolyList表示多项式链表,CreatePoly用来创建多项式链表,AddPoly用来实现多项式相加,PrintPoly用来打印多项式。