以下是一元多项式加法的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(),以及一些辅助函数来创建、插入和打印多项式。我们首先创建两个多项式p1p2,然后将它们传递给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语言数据结构和算法的参考示例。

C语言实现一元多项式加法运算

原文地址: https://www.cveoy.top/t/topic/lRHo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录