给出用单链表存储多项式的结构,并编写一个按指数值递增次序输入所产生的多项式链表的过程。
时间: 2024-03-25 22:42:15 浏览: 66
单链表存储多项式的结构体定义如下:
```c
typedef struct PolyNode {
int coef; // 系数
int expon; // 指数
struct PolyNode *next; // 指向下一个节点的指针
} PolyNode, *Polynomial;
```
按照指数值递增次序输入多项式的过程如下:
```c
Polynomial CreatePolynomial() {
Polynomial head, tail, node;
int n;
// 创建头节点
head = (Polynomial)malloc(sizeof(PolyNode));
head->next = NULL;
tail = head;
// 输入项数
printf("请输入多项式的项数:");
scanf("%d", &n);
// 输入每一项的系数和指数
printf("请按指数值递增次序输入每一项的系数和指数:\n");
while (n--) {
node = (Polynomial)malloc(sizeof(PolyNode));
scanf("%d %d", &node->coef, &node->expon);
node->next = NULL;
// 将节点插入链表中,按指数值递增次序排序
while (tail->next && tail->next->expon <= node->expon) {
tail = tail->next;
}
node->next = tail->next;
tail->next = node;
tail = node;
}
return head;
}
```
此过程中,我们先创建了头节点,并将其赋值给`head`和`tail`。然后通过循环输入每一项的系数和指数,并将其存储在一个新的节点中。接下来,我们将新的节点插入到链表中,按指数值递增次序排序。最后,返回链表头节点`head`即可。
阅读全文