用C语言编写一元多项式的加法
时间: 2024-03-24 22:36:30 浏览: 63
好的,以下是一元多项式的加法的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct polyNode {
int coef; // 系数
int exp; // 指数
struct polyNode *next; // 指向下一个节点的指针
} PolyNode, *Polynomial;
Polynomial readPoly() {
int n;
scanf("%d", &n); // 输入多项式的项数
Polynomial p, rear, t;
p = (Polynomial) malloc(sizeof(PolyNode)); // 创建头结点
p->next = NULL;
rear = p;
while (n--) {
t = (Polynomial) malloc(sizeof(PolyNode)); // 创建新节点
scanf("%d %d", &t->coef, &t->exp); // 输入系数和指数
t->next = NULL;
rear->next = t; // 将新节点插入到链表尾部
rear = t;
}
return p;
}
Polynomial addPoly(Polynomial p1, Polynomial p2) {
Polynomial front, rear, temp;
front = (Polynomial) malloc(sizeof(PolyNode)); // 创建头结点
rear = front;
while (p1 && p2) {
if (p1->exp == p2->exp) { // 指数相等
int sum = p1->coef + p2->coef;
if (sum) {
temp = (Polynomial) malloc(sizeof(PolyNode)); // 创建新节点
temp->coef = sum;
temp->exp = p1->exp;
rear->next = temp; // 将新节点插入到链表尾部
rear = temp;
}
p1 = p1->next;
p2 = p2->next;
} else if (p1->exp > p2->exp) { // p1的指数大于p2的指数
temp = (Polynomial) malloc(sizeof(PolyNode)); // 创建新节点
temp->coef = p1->coef;
temp->exp = p1->exp;
rear->next = temp; // 将新节点插入到链表尾部
rear = temp;
p1 = p1->next;
} else { // p1的指数小于p2的指数
temp = (Polynomial) malloc(sizeof(PolyNode)); // 创建新节点
temp->coef = p2->coef;
temp->exp = p2->exp;
rear->next = temp; // 将新节点插入到链表尾部
rear = temp;
p2 = p2->next;
}
}
while (p1) { // p1有剩余项
temp = (Polynomial) malloc(sizeof(PolyNode)); // 创建新节点
temp->coef = p1->coef;
temp->exp = p1->exp;
rear->next = temp; // 将新节点插入到链表尾部
rear = temp;
p1 = p1->next;
}
while (p2) { // p2有剩余项
temp = (Polynomial) malloc(sizeof(PolyNode)); // 创建新节点
temp->coef = p2->coef;
temp->exp = p2->exp;
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->exp);
p = p->next;
if (p) {
printf(" ");
} else {
printf("\n");
}
}
}
int main() {
Polynomial p1, p2, p;
p1 = readPoly();
p2 = readPoly();
p = addPoly(p1, p2);
printPoly(p);
return 0;
}
```
这段代码实现了一元多项式的加法,具体实现过程如下:
1. 定义了一个 Polynomail 结构体,表示多项式,包含系数和指数两个成员,以及一个指向下一个节点的指针。
2. 定义了 readPoly 函数,用于读入多项式,其返回值是一个指向头结点的指针。
3. 定义了 addPoly 函数,用于将两个多项式相加,其返回值是一个指向头结点的指针。
4. 定义了 printPoly 函数,用于输出多项式。
5. 在 main 函数中,先读入两个多项式,然后将它们相加,最后输出结果。
阅读全文