一元多项式相加c语言
时间: 2023-12-02 19:39:10 浏览: 127
一元多项式相加是指将两个一元多项式相加得到一个新的一元多项式。在C语言中,可以使用单链表来实现一元多项式的存储和相加。具体实现步骤如下:
1. 定义一个结构体来表示一元多项式的每一项,包括系数和指数两个成员变量。
2. 定义一个单链表结构体来存储一元多项式,每个节点存储一项的系数和指数。
3. 编写函数来创建一元多项式,输入时逐项、按顺序输入一元多项式的系数、指数,输入系数为0时表述输入结束。
4. 编写函数来实现一元多项式相加,遍历两个链表,将相同指数的项相加,将结果存储在一个新的链表中。
5. 编写函数来输出一元多项式,遍历链表,按照指数从高到低的顺序输出每一项。
下面是一个简单的C语言实现示例:
```
#include <stdio.h>
#include <stdlib.h>
// 定义一元多项式项的结构体
typedef struct PolyNode {
int coef; // 系数
int expon; // 指数
struct PolyNode *next;
} PolyNode, *Polynomial;
// 创建一元多项式
Polynomial createPoly() {
Polynomial p, rear, t;
int c, e;
p = (PolyNode *)malloc(sizeof(PolyNode));
p->next = NULL;
rear = p;
scanf("%d %d", &c, &e);
while (c != 0) {
t = (PolyNode *)malloc(sizeof(PolyNode));
t->coef = c;
t->expon = e;
t->next = NULL;
rear->next = t;
rear = t;
scanf("%d %d", &c, &e);
}
return p;
}
// 一元多项式相加
Polynomial addPoly(Polynomial p1, Polynomial p2) {
Polynomial front, rear, temp;
int sum;
rear = (PolyNode *)malloc(sizeof(PolyNode));
front = rear;
while (p1 && p2) {
if (p1->expon > p2->expon) {
temp = (PolyNode *)malloc(sizeof(PolyNode));
temp->coef = p1->coef;
temp->expon = p1->expon;
temp->next = NULL;
rear->next = temp;
rear = temp;
p1 = p1->next;
} else if (p1->expon < p2->expon) {
temp = (PolyNode *)malloc(sizeof(PolyNode));
temp->coef = p2->coef;
temp->expon = p2->expon;
temp->next = NULL;
rear->next = temp;
rear = temp;
p2 = p2->next;
} else {
sum = p1->coef + p2->coef;
if (sum != 0) {
temp = (PolyNode *)malloc(sizeof(PolyNode));
temp->coef = sum;
temp->expon = p1->expon;
temp->next = NULL;
rear->next = temp;
rear = temp;
}
p1 = p1->next;
p2 = p2->next;
}
}
while (p1) {
temp = (PolyNode *)malloc(sizeof(PolyNode));
temp->coef = p1->coef;
temp->expon = p1->expon;
temp->next = NULL;
rear->next = temp;
rear = temp;
p1 = p1->next;
}
while (p2) {
temp = (PolyNode *)malloc(sizeof(PolyNode));
temp->coef = p2->coef;
temp->expon = p2->expon;
temp->next = NULL;
rear->next = temp;
rear = temp;
p2 = p2->next;
}
rear->next = NULL;
temp = front;
front = front->next;
free(temp);
return front;
}
// 输出一元多项式
void printPoly(Polynomial p) {
if (!p) {
printf("0 0\n");
return;
}
while (p) {
printf("%d %d", p->coef, p->expon);
p = p->next;
if (p) {
printf(" ");
} else {
printf("\n");
}
}
}
int main() {
Polynomial p1, p2, p3;
p1 = createPoly();
p2 = createPoly();
p3 = addPoly(p1, p2);
printPoly(p3);
return 0;
}
```
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![c](https://img-home.csdnimg.cn/images/20250102104920.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)