多项式算法用链表形式c语言写出来
时间: 2024-10-08 14:11:31 浏览: 12
多项式算法通常涉及到处理多项式的加减乘除等操作。在C语言中,我们可以使用结构体表示一个多项式的系数和阶数,然后使用链表数据结构存储多项式的所有项。这里是一个简单的例子,展示了如何用链表形式表示并实现一个单变量多项式:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义多项式项结构
typedef struct {
double coef; // 系数
int exp; // 指数
} Term;
// 链表节点
typedef struct PolynomialNode {
Term term;
struct PolynomialNode* next;
} PolynomialNode;
// 创建一个新的链表节点
PolynomialNode* createTerm(double coef, int exp) {
PolynomialNode* newNode = (PolynomialNode*)malloc(sizeof(PolynomialNode));
newNode->termcoef = coef;
newNode->termexp = exp;
newNode->next = NULL;
return newNode;
}
// 添加多项式项到链表
void addTerm(PolynomialNode** head, double coef, int exp) {
PolynomialNode* newNode = createTerm(coef, exp);
if (*head == NULL) {
*head = newNode;
} else {
PolynomialNode* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
// 打印多项式
void printPolynomial(PolynomialNode* head) {
PolynomialNode* current = head;
while (current != NULL) {
printf("%f * x^%d + ", current->termcoef, current->termexp);
current = current->next;
}
printf("0\n"); // 结尾的常数项
}
int main() {
PolynomialNode* head = NULL;
// 示例:添加两个项到多项式
addTerm(&head, 2, 1); // 2x +
addTerm(&head, -1, 2); // -x^2
// 打印多项式
printPolynomial(head);
return 0;
}
```
这个程序实现了基本的多项式链表存储和打印功能。你可以根据需要扩展它,比如实现加法、减法、乘法和除法运算。