C语言实现一元多项式加法运算
以下是一元多项式加法的C语言代码:
#include<stdio.h>
#include<stdlib.h>
// 定义多项式结构体
typedef struct node {
int coef; // 系数
int expo; // 指数
struct node *next;
} Polynomial;
// 创建新节点
Polynomial* create_node(int coef, int expo) {
Polynomial *new_node = (Polynomial *) malloc(sizeof(Polynomial));
new_node->coef = coef;
new_node->expo = expo;
new_node->next = NULL;
return new_node;
}
// 插入新节点
void insert_node(Polynomial **poly, int coef, int expo) {
Polynomial *new_node = create_node(coef, expo);
if (*poly == NULL)
*poly = new_node;
else {
Polynomial *temp = *poly;
while (temp->next != NULL)
temp = temp->next;
temp->next = new_node;
}
}
// 多项式相加
Polynomial* add_poly(Polynomial *p1, Polynomial *p2) {
Polynomial *result = NULL;
while (p1 != NULL && p2 != NULL) {
if (p1->expo > p2->expo) {
insert_node(&result, p1->coef, p1->expo);
p1 = p1->next;
}
else if (p1->expo < p2->expo) {
insert_node(&result, p2->coef, p2->expo);
p2 = p2->next;
}
else {
insert_node(&result, p1->coef + p2->coef, p1->expo);
p1 = p1->next;
p2 = p2->next;
}
}
while (p1 != NULL) {
insert_node(&result, p1->coef, p1->expo);
p1 = p1->next;
}
while (p2 != NULL) {
insert_node(&result, p2->coef, p2->expo);
p2 = p2->next;
}
return result;
}
// 打印多项式
void print_poly(Polynomial *poly) {
while (poly != NULL) {
printf('%dx^%d', poly->coef, poly->expo);
poly = poly->next;
if (poly != NULL)
printf(' + ');
}
printf('
');
}
int main() {
Polynomial *p1 = NULL;
insert_node(&p1, 3, 2);
insert_node(&p1, 5, 1);
insert_node(&p1, 2, 0);
Polynomial *p2 = NULL;
insert_node(&p2, 4, 3);
insert_node(&p2, 2, 2);
insert_node(&p2, 1, 0);
Polynomial *result = add_poly(p1, p2);
printf('p1 = ');
print_poly(p1);
printf('p2 = ');
print_poly(p2);
printf('p1 + p2 = ');
print_poly(result);
return 0;
}
在这个例子中,我们创建了一个简单的多项式加法函数add_poly(),以及一些辅助函数来创建、插入和打印多项式。我们首先创建两个多项式p1和p2,然后将它们传递给add_poly()函数。该函数将返回一个新的多项式,该多项式是两个输入多项式的和。最后,我们打印出所有三个多项式以进行比较。
输出结果如下:
p1 = 3x^2 + 5x^1 + 2x^0
p2 = 4x^3 + 2x^2 + 1x^0
p1 + p2 = 4x^3 + 5x^2 + 5x^1 + 3x^0
本代码使用链表来存储多项式的项,并在加法运算中对两个链表进行遍历,比较指数,并进行相应的系数加法操作。该代码简洁易懂,适合作为学习C语言数据结构和算法的参考示例。
原文地址: https://www.cveoy.top/t/topic/lRHo 著作权归作者所有。请勿转载和采集!