以下是一元多项式加法的C语言代码:

#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int coef; // 系数
    int exp; // 指数
    struct Node *next; // 指向下一个节点的指针
} Node, *Polynomial;

// 创建一个新节点
Node *createNode(int coef, int exp) {
    Node *node = (Node *) malloc(sizeof(Node));
    node->coef = coef;
    node->exp = exp;
    node->next = NULL;
    return node;
}

// 在多项式的末尾添加一个新节点
void addNode(Polynomial poly, int coef, int exp) {
    Node *node = createNode(coef, exp);
    Node *p = poly;
    while (p->next != NULL) {
        p = p->next;
    }
    p->next = node;
}

// 读取多项式
Polynomial readPolynomial() {
    Polynomial poly = createNode(0, 0);
    int n;
    scanf('%d', &n);
    for (int i = 0; i < n; i++) {
        int coef, exp;
        scanf('%d %d', &coef, &exp);
        addNode(poly, coef, exp);
    }
    return poly;
}

// 多项式加法
Polynomial addPolynomial(Polynomial p1, Polynomial p2) {
    Polynomial sum = createNode(0, 0);
    Node *p = p1->next;
    Node *q = p2->next;
    while (p != NULL && q != NULL) {
        if (p->exp < q->exp) {
            addNode(sum, p->coef, p->exp);
            p = p->next;
        } else if (p->exp > q->exp) {
            addNode(sum, q->coef, q->exp);
            q = q->next;
        } else {
            int coef = p->coef + q->coef;
            if (coef != 0) {
                addNode(sum, coef, p->exp);
            }
            p = p->next;
            q = q->next;
        }
    }
    while (p != NULL) {
        addNode(sum, p->coef, p->exp);
        p = p->next;
    }
    while (q != NULL) {
        addNode(sum, q->coef, q->exp);
        q = q->next;
    }
    return sum;
}

// 输出多项式
void printPolynomial(Polynomial poly) {
    Node *p = poly->next;
    if (p == NULL) {
        printf('0 0\n');
        return;
    }
    printf('%d %d', p->coef, p->exp);
    p = p->next;
    while (p != NULL) {
        printf(' %d %d', p->coef, p->exp);
        p = p->next;
    }
    printf('\n');
}

int main() {
    Polynomial p1 = readPolynomial();
    Polynomial p2 = readPolynomial();
    Polynomial sum = addPolynomial(p1, p2);
    printPolynomial(sum);
    return 0;
}

该代码首先定义了一个 Node 结构体,表示多项式中的一个节点,包含系数和指数两个成员变量,以及指向下一个节点的指针。同时还定义了一个 Polynomial 类型,表示一个多项式,是指向多项式的头节点的指针。

接下来定义了一些操作函数,如 createNode 函数用于创建一个新节点,addNode 函数用于在多项式的末尾添加一个新节点,readPolynomial 函数用于读取多项式,addPolynomial 函数用于执行多项式加法,printPolynomial 函数用于输出多项式。这些函数都是比较简单的链表操作,不再赘述。

最后在 main 函数中先读取两个多项式,然后调用 addPolynomial 函数执行加法运算,最后输出结果多项式。

例如,输入:

3
4 3
-2 1
1 0
4
3 4
-1 3
2 1
1 0

输出:

3 4 -2 3 2 1 2 0

代码解释:

  1. 节点结构体 Node: 存储多项式中每个项的信息,包含系数 coef、指数 exp 和指向下一个节点的指针 next
  2. 多项式类型 Polynomial: 定义为指向 Node 结构体的指针,表示多项式的头部。
  3. createNode 函数: 创建一个新的节点,并返回指向该节点的指针。
  4. addNode 函数: 在多项式末尾添加一个新节点。
  5. readPolynomial 函数: 从输入中读取多项式的系数和指数,并构建多项式链表。
  6. addPolynomial 函数: 执行两个多项式的加法运算,并返回结果多项式。
  7. printPolynomial 函数: 输出多项式的系数和指数。
  8. main 函数: 读取两个多项式,执行加法运算,并输出结果。

该代码使用了链表结构来存储多项式,通过遍历链表实现多项式的加法运算,代码简洁易懂,并能够有效处理不同指数的多项式加法运算。

C语言实现一元多项式加法运算:代码解析与示例

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

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