c实现一元多项式的表示及相加
时间: 2024-09-10 14:17:19 浏览: 45
在C语言中实现一元多项式的表示和相加,通常需要定义多项式的数据结构,然后编写相应的函数来完成表示和相加的操作。一个常用的方法是使用结构体来表示多项式的每一项,包括系数和指数两个部分。然后通过链表将所有项连接起来,形成一个多项式。
下面是一个简单的一元多项式表示及相加的示例:
1. 定义多项式的结构体表示:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义多项式的项结构体
typedef struct PolyNode {
int coef; // 系数
int expn; // 指数
struct PolyNode *next; // 指向下一项的指针
} PolyNode, *Polynomial;
```
2. 创建多项式:
```c
// 创建一个空的多项式
Polynomial CreatePolynomial() {
Polynomial P = (Polynomial)malloc(sizeof(PolyNode));
if (!P) {
return NULL;
}
P->next = NULL;
return P;
}
```
3. 多项式相加的函数实现:
```c
// 多项式相加
Polynomial AddPolynomials(Polynomial P1, Polynomial P2) {
Polynomial head = CreatePolynomial();
PolyNode *p1 = P1->next;
PolyNode *p2 = P2->next;
PolyNode *p = head;
while (p1 && p2) {
if (p1->expn < p2->expn) {
p->next = (PolyNode *)malloc(sizeof(PolyNode));
if (!p->next) {
// 内存分配失败处理
return NULL;
}
p->next->coef = p1->coef;
p->next->expn = p1->expn;
p1 = p1->next;
} else if (p1->expn > p2->expn) {
p->next = (PolyNode *)malloc(sizeof(PolyNode));
if (!p->next) {
// 内存分配失败处理
return NULL;
}
p->next->coef = p2->coef;
p->next->expn = p2->expn;
p2 = p2->next;
} else {
int sumCoef = p1->coef + p2->coef;
if (sumCoef) {
p->next = (PolyNode *)malloc(sizeof(PolyNode));
if (!p->next) {
// 内存分配失败处理
return NULL;
}
p->next->coef = sumCoef;
p->next->expn = p1->expn;
}
p1 = p1->next;
p2 = p2->next;
}
if (p->next) {
p = p->next;
}
}
// 如果某个多项式还有剩余项,添加到结果多项式中
while (p1) {
p->next = (PolyNode *)malloc(sizeof(PolyNode));
if (!p->next) {
// 内存分配失败处理
return NULL;
}
p->next->coef = p1->coef;
p->next->expn = p1->expn;
p1 = p1->next;
p = p->next;
}
while (p2) {
p->next = (PolyNode *)malloc(sizeof(PolyNode));
if (!p->next) {
// 内存分配失败处理
return NULL;
}
p->next->coef = p2->coef;
p->next->expn = p2->expn;
p2 = p2->next;
p = p->next;
}
if (head->next == NULL) {
free(head);
head = NULL;
} else {
p->next = NULL;
}
return head;
}
```
4. 使用上述函数创建多项式并进行相加操作,最后打印结果。
阅读全文