下面是一个用 C 语言链表实现多项式计算器的示例:

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

// 定义多项式的节点结构
typedef struct Node {
    int coefficient;    // 系数
    int exponent;       // 指数
    struct Node* next;  // 指向下一个节点的指针
} Node;

// 向多项式中插入一个节点
void insertNode(Node** head, int coef, int expo) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->coefficient = coef;
    newNode->exponent = expo;
    newNode->next = NULL;

    if (*head == NULL) {
        *head = newNode;
    } else {
        Node* curr = *head;
        while (curr->next != NULL) {
            curr = curr->next;
        }
        curr->next = newNode;
    }
}

// 打印多项式
void printPolynomial(Node* head) {
    Node* curr = head;
    while (curr != NULL) {
        printf("%dx^%d", curr->coefficient, curr->exponent);
        curr = curr->next;
        if (curr != NULL) {
            printf(" + ");
        }
    }
    printf("\n");
}

// 计算两个多项式的和
Node* addPolynomials(Node* poly1, Node* poly2) {
    Node* result = NULL;
    Node* curr1 = poly1;
    Node* curr2 = poly2;

    while (curr1 != NULL && curr2 != NULL) {
        if (curr1->exponent > curr2->exponent) {
            insertNode(&result, curr1->coefficient, curr1->exponent);
            curr1 = curr1->next;
        } else if (curr1->exponent < curr2->exponent) {
            insertNode(&result, curr2->coefficient, curr2->exponent);
            curr2 = curr2->next;
        } else {
            int coefSum = curr1->coefficient + curr2->coefficient;
            if (coefSum != 0) {
                insertNode(&result, coefSum, curr1->exponent);
            }
            curr1 = curr1->next;
            curr2 = curr2->next;
        }
    }

    while (curr1 != NULL) {
        insertNode(&result, curr1->coefficient, curr1->exponent);
        curr1 = curr1->next;
    }

    while (curr2 != NULL) {
        insertNode(&result, curr2->coefficient, curr2->exponent);
        curr2 = curr2->next;
    }

    return result;
}

int main() {
    Node* poly1 = NULL;
    Node* poly2 = NULL;
    Node* sum = NULL;

    // 插入多项式1的节点
    insertNode(&poly1, 3, 2);
    insertNode(&poly1, 4, 1);
    insertNode(&poly1, 2, 0);

    // 插入多项式2的节点
    insertNode(&poly2, 1, 2);
    insertNode(&poly2, -2, 1);
    insertNode(&poly2, 5, 0);

    // 打印多项式1和多项式2
    printf("Polynomial 1: ");
    printPolynomial(poly1);
    printf("Polynomial 2: ");
    printPolynomial(poly2);

    // 计算多项式1和多项式2的和
    sum = addPolynomials(poly1, poly2);

    // 打印结果
    printf("Sum: ");
    printPolynomial(sum);

    return 0;
}

这个程序中,我们使用了单向链表来表示多项式。每个节点包含了一个系数和指数,并使用'next'指针指向下一个节点。首先,我们实现了'insertNode'函数,用于向多项式中插入一个节点。然后,我们实现了'printPolynomial'函数,用于打印多项式的表达式。最后,我们实现了'addPolynomials'函数,用于计算两个多项式的和。在'main'函数中,我们创建了两个多项式并插入节点,然后调用'addPolynomials'函数计算它们的和,并打印结果。

运行上述代码,输出结果为:

Polynomial 1: 3x^2 + 4x^1 + 2x^0
Polynomial 2: 1x^2 + -2x^1 + 5x^0
Sum: 4x^2 + 2x^1 + 7x^0

这里我们只实现了多项式的加法运算,你可以根据需要进一步扩展计算器的功能。

C语言链表实现多项式计算器

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

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