首页主机资讯c语言怎么实现一元多项式运算

c语言怎么实现一元多项式运算

时间2023-12-11 15:51:02发布访客分类主机资讯浏览1011
导读:在C语言中,可以使用结构体来表示一元多项式,并定义相应的操作函数来实现多项式的运算。下面是一个简单的实现示例: #include <stdio.h> #include <stdlib.h> typedef stru...

在C语言中,可以使用结构体来表示一元多项式,并定义相应的操作函数来实现多项式的运算。下面是一个简单的实现示例:

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


typedef struct PolyNode {
    
    float coef;
      // 系数
    int exp;
      // 指数
    struct PolyNode* next;
  // 指向下一项的指针
}
     PolyNode;
    

typedef PolyNode* Polynomial;
  // 多项式类型

// 创建一个新的项
PolyNode* createNode(float coef, int exp) {
    
    PolyNode* newNode = (PolyNode*)malloc(sizeof(PolyNode));
    
    newNode->
    coef = coef;
    
    newNode->
    exp = exp;
    
    newNode->
    next = NULL;
    
    return newNode;

}


// 插入一项到多项式的末尾
void insertTerm(Polynomial* poly, float coef, int exp) {
    
    PolyNode* newNode = createNode(coef, exp);

    if (*poly == NULL) {
    
        *poly = newNode;

    }
 else {
    
        PolyNode* curr = *poly;
    
        while (curr->
next != NULL) {
    
            curr = curr->
    next;

        }
    
        curr->
    next = newNode;

    }

}


// 打印多项式
void printPolynomial(Polynomial poly) {
    
    PolyNode* curr = poly;

    while (curr != NULL) {
    
        printf("%.2fx^%d", curr->
    coef, curr->
    exp);
    
        if (curr->
next != NULL) {
    
            printf(" + ");

        }
    
        curr = curr->
    next;

    }
    
    printf("\n");

}


// 相加两个多项式
Polynomial addPolynomials(Polynomial poly1, Polynomial poly2) {
    
    Polynomial sumPoly = NULL;
    
    PolyNode* curr1 = poly1;
    
    PolyNode* curr2 = poly2;
    

    while (curr1 != NULL &
    &
 curr2 != NULL) {
    
        if (curr1->
    exp >
     curr2->
exp) {
    
            insertTerm(&
    sumPoly, curr1->
    coef, curr1->
    exp);
    
            curr1 = curr1->
    next;

        }
     else if (curr1->
    exp  curr2->
exp) {
    
            insertTerm(&
    sumPoly, curr2->
    coef, curr2->
    exp);
    
            curr2 = curr2->
    next;

        }
 else {
    
            float coefSum = curr1->
    coef + curr2->
    coef;

            if (coefSum != 0) {
    
                insertTerm(&
    sumPoly, coefSum, curr1->
    exp);

            }
    
            curr1 = curr1->
    next;
    
            curr2 = curr2->
    next;

        }

    }


    // 将剩余项加入和多项式中
    while (curr1 != NULL) {
    
        insertTerm(&
    sumPoly, curr1->
    coef, curr1->
    exp);
    
        curr1 = curr1->
    next;

    }

    while (curr2 != NULL) {
    
        insertTerm(&
    sumPoly, curr2->
    coef, curr2->
    exp);
    
        curr2 = curr2->
    next;

    }
    

    return sumPoly;

}


int main() {
    
    Polynomial poly1 = NULL;
    
    Polynomial poly2 = NULL;
    
    Polynomial sumPoly = NULL;
    

    // 初始化多项式1
    insertTerm(&
    poly1, 3.0, 2);
    
    insertTerm(&
    poly1, 4.0, 1);
    
    insertTerm(&
    poly1, 2.0, 0);
    

    // 初始化多项式2
    insertTerm(&
    poly2, 1.0, 3);
    
    insertTerm(&
    poly2, -2.0, 2);
    
    insertTerm(&
    poly2, 5.0, 0);
    

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

    // 相加两个多项式
    sumPoly = addPolynomials(poly1, poly2);
    

    // 打印结果多项式
    printf("Sum of polynomials: ");
    
    printPolynomial(sumPoly);
    

    return 0;

}
    

在上述示例中,我们使用PolyNode结构体表示多项式的每一项。PolyNode结构体包括coef(系数)和exp(指数)两个成员变量,以及一个指向下一项的指针next。我们还定义了Polynomial类型作为多项式的别名,同时定义了一些操作函数,如createNode

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: c语言怎么实现一元多项式运算
本文地址: https://pptw.com/jishu/576658.html
ubuntu怎么查看源列表 c语言空数组如何赋值

游客 回复需填写必要信息