C语言链表实现多项式计算器
下面是一个用 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
这里我们只实现了多项式的加法运算,你可以根据需要进一步扩展计算器的功能。
原文地址: https://www.cveoy.top/t/topic/rzx 著作权归作者所有。请勿转载和采集!