用C语言实现2 10-4 链表建立练习2 分数 20 作者 吴敏华 单位 首都师范大学 建立链表并输出链表内容。链表每个结点包括一元多项式的一项。 输入格式: 输入一行,给出多项式中的每一项,以(0,0)结束。 输出格式: 输出共一行,依次用格式%dx^%d输出一项的值。指数为0的项、指数或系数为1的项与书写习惯相同。
时间: 2024-03-12 16:49:35 浏览: 55
以下是基于题目描述的C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义多项式的项
typedef struct Node {
int coef; // 系数
int expn; // 指数
struct Node *next; // 下一个结点指针
} Node, *LinkList;
// 新建结点
Node *NewNode(int coef, int expn) {
Node *node = (Node *)malloc(sizeof(Node));
node->coef = coef;
node->expn = expn;
node->next = NULL;
return node;
}
// 新建链表
LinkList CreateList() {
Node *head = NewNode(0, 0); // 头结点
Node *tail = head; // 尾结点
int coef, expn;
while (scanf("(%d,%d)", &coef, &expn) == 2) {
if (coef == 0 && expn == 0) {
break;
}
Node *node = NewNode(coef, expn);
tail->next = node;
tail = node;
}
return head;
}
// 输出链表
void PrintList(LinkList L) {
Node *p = L->next;
while (p) {
if (p != L->next && p->coef > 0) {
printf("+");
}
printf("%d", p->coef);
if (p->expn > 0) {
printf("x");
if (p->expn > 1) {
printf("^%d", p->expn);
}
}
p = p->next;
}
printf("\n");
}
int main() {
LinkList L = CreateList();
PrintList(L);
return 0;
}
```
输入样例:
```
(3,0)(2,5)(4,7)(6,3)(8,9)(0,0)
```
输出样例:
```
3+2x^5+4x^7+6x^3+8x^9
```
阅读全文