阅读量:0
在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
用