C语言链表多项式相加
时间: 2023-11-10 22:06:57 浏览: 115
c语言链表实现多项式相加
链表实现多项式相加的步骤如下:
1. 首先定义一个链表结构体,用来表示多项式的每一项。结构体包含两个成员:系数 coefficient 和指数 exponent。
```c
typedef struct Node {
float coefficient;
int exponent;
struct Node* next;
} Node;
```
2. 创建两个链表,分别代表两个多项式,并初始化为空链表。
```c
Node* poly1 = NULL;Node* poly2 = NULL;
```
3. 编写函数用来向链表中插入新的项。
```c
void insertTerm(Node** poly, float coefficient, int exponent) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->coefficient = coefficient;
newNode->exponent = exponent;
newNode->next = NULL;
if (*poly == NULL) {
*poly = newNode;
} else {
Node* temp = *poly;
while (temp->next != NULL)
temp = temp->next;
temp->next = newNode;
}
}
```
4. 从用户输入或其他方式获取多项式的每一项的系数和指数,并将其插入到对应的链表中。
```c
float coefficient;
int exponent;
// 获取第一个多项式的项,重复此过程插入所有项
// ...
insertTerm(&poly1, coefficient, exponent);
// 获取第二个多项式的项,重复此过程插入所有项
// ...
insertTerm(&poly2, coefficient, exponent);
```
5. 编写函数用来计算两个多项式相加的结果,并返回一个新的链表。
```c
Node* addPolynomials(Node* poly1, Node* poly2) {
Node* result = NULL;
while (poly1 != NULL && poly2 != NULL) {
if (poly1->exponent > poly2->exponent) {
insertTerm(&result, poly1->coefficient, poly1->exponent);
poly1 = poly1->next;
} else if (poly1->exponent < poly2->exponent) {
insertTerm(&result, poly2->coefficient, poly2->exponent);
poly2 = poly2->next;
} else {
float sumCoefficients = poly1->coefficient + poly2->coefficient;
if (sumCoefficients != 0.0)
insertTerm(&result, sumCoefficients, poly1->exponent);
poly1 = poly1->next;
poly2 = poly2->next;
}
}
// 将剩余项插入到结果链表中
while (poly1 != NULL) {
insertTerm(&result, poly1->coefficient, poly1->exponent);
poly1 = poly1->next;
}
while (poly2 != NULL) {
insertTerm(&result, poly2->coefficient, poly2->exponent);
poly2 = poly2->next;
}
return result;
}
```
6. 调用 addPolynomials 函数计算结果,并遍历结果链表打印出多项式相加的结果。
```c
Node* sum = addPolynomials(poly1, poly2);
Node* temp = sum;
while (temp != NULL) {
printf("%.2fx^%d ", temp->coefficient, temp->exponent);
temp = temp->next;
}
// 释放链表内存
temp = sum;
while (temp != NULL) {
Node* next = temp->next;
free(temp);
temp = next;
}
```
这样,你就可以通过链表来实现 C 语言中多项式的相加了。
阅读全文