C语言用链表实现多项式的读取
时间: 2023-07-11 21:15:19 浏览: 69
使用链表实现多项式可以有效地节省空间,并且方便实现各种操作。以下是用链表实现多项式读取的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义多项式节点
typedef struct PolyNode {
int coef; // 系数
int expon; // 指数
struct PolyNode *next; // 指向下一个节点
} PolyNode, *Polynomial;
// 创建多项式节点(不带头结点)
PolyNode* createPolyNode(int coef, int expon) {
PolyNode* node = (PolyNode*)malloc(sizeof(PolyNode));
node->coef = coef;
node->expon = expon;
node->next = NULL;
return node;
}
// 释放多项式内存
void destroyPolynomial(Polynomial poly) {
PolyNode* p = poly;
while (p != NULL) {
PolyNode* tmp = p;
p = p->next;
free(tmp);
}
}
// 读取多项式
Polynomial readPolynomial() {
Polynomial poly = NULL;
int n;
scanf("%d", &n);
while (n--) {
int coef, expon;
scanf("%d%d", &coef, &expon);
PolyNode* node = createPolyNode(coef, expon);
node->next = poly;
poly = node;
}
return poly;
}
// 输出多项式
void printPolynomial(Polynomial poly) {
PolyNode* p = poly;
if (p == NULL) {
printf("0 0\n");
return;
}
while (p != NULL) {
printf("%d %d", p->coef, p->expon);
if (p->next != NULL) {
printf(" ");
} else {
printf("\n");
}
p = p->next;
}
}
int main() {
Polynomial poly = readPolynomial();
printPolynomial(poly);
destroyPolynomial(poly);
return 0;
}
```
在上面的示例代码中,我们定义了一个 `PolyNode` 结构体表示多项式中的每一项,同时定义了 `Polynomial` 类型表示多项式。`createPolyNode()` 函数用于创建一个多项式节点,`destroyPolynomial()` 函数用于释放多项式内存。`readPolynomial()` 函数用于读取多项式,读入多项式的项数和每一项的系数和指数,然后将这些项插入到链表的头部。`printPolynomial()` 函数用于输出多项式。在主函数中,我们读取多项式并打印出来,最后释放内存。