多项式相加,c语言,数据结构
时间: 2024-03-24 08:34:53 浏览: 68
多项式相加是指将两个或多个多项式相加的操作。在C语言中,可以使用数据结构来表示和操作多项式。
一种常见的表示多项式的方式是使用链表。每个节点表示一个项,包含两个成员:系数和指数。通过链接各个节点,可以形成一个链表来表示整个多项式。
下面是一个示例的C语言代码,用于实现多项式相加的功能:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义多项式的节点结构
typedef struct Node {
int coefficient; // 系数
int exponent; // 指数
struct Node* next;
} Node;
// 创建一个新的节点
Node* createNode(int coefficient, int exponent) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->coefficient = coefficient;
newNode->exponent = exponent;
newNode->next = NULL;
return newNode;
}
// 向多项式中插入一个节点
void insertNode(Node** poly, int coefficient, int exponent) {
Node* newNode = createNode(coefficient, exponent);
if (*poly == NULL) {
*poly = newNode;
} else {
Node* temp = *poly;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
}
// 多项式相加
Node* addPolynomials(Node* poly1, Node* poly2) {
Node* result = NULL;
Node* temp1 = poly1;
Node* temp2 = poly2;
while (temp1 != NULL && temp2 != NULL) {
if (temp1->exponent > temp2->exponent) {
insertNode(&result, temp1->coefficient, temp1->exponent);
temp1 = temp1->next;
} else if (temp1->exponent < temp2->exponent) {
insertNode(&result, temp2->coefficient, temp2->exponent);
temp2 = temp2->next;
} else {
int sum = temp1->coefficient + temp2->coefficient;
if (sum != 0) {
insertNode(&result, sum, temp1->exponent);
}
temp1 = temp1->next;
temp2 = temp2->next;
}
}
// 将剩余的节点插入结果中
while (temp1 != NULL) {
insertNode(&result, temp1->coefficient, temp1->exponent);
temp1 = temp1->next;
}
while (temp2 != NULL) {
insertNode(&result, temp2->coefficient, temp2->exponent);
temp2 = temp2->next;
}
return result;
}
// 打印多项式
void printPolynomial(Node* poly) {
Node* temp = poly;
while (temp != NULL) {
printf("%dx^%d ", temp->coefficient, temp->exponent);
if (temp->next != NULL) {
printf("+ ");
}
temp = temp->next;
}
printf("\n");
}
int main() {
Node* poly1 = NULL;
Node* poly2 = NULL;
// 创建多项式1
insertNode(&poly1, 3, 2);
insertNode(&poly1, 4, 1);
insertNode(&poly1, 2, 0);
// 创建多项式2
insertNode(&poly2, 2, 3);
insertNode(&poly2, -1, 2);
insertNode(&poly2, 5, 0);
printf("多项式1:");
printPolynomial(poly1);
printf("多项式2:");
printPolynomial(poly2);
Node* result = addPolynomials(poly1, poly2);
printf("相加结果:");
printPolynomial(result);
return 0;
}
```
上述代码中,首先定义了一个多项式的节点结构,包含系数和指数两个成员。然后通过`createNode`函数创建一个新的节点,通过`insertNode`函数向多项式中插入节点。`addPolynomials`函数用于实现多项式相加的逻辑,最后通过`printPolynomial`函数打印多项式。
阅读全文