用C语言建立链表并输出链表内容。链表每个结点包括一个一元多项式的一项。 输入格式: 输入共n+1行,第一行是n的值,其余各行分别是每项的系数和指数。 输出格式: 输出共一行,依次用格式%dx^%d输出一项的值。指数为0的项、指数或系数为1的项不显示0和1
时间: 2024-03-12 13:47:02 浏览: 60
好的,我会尽力回答你的问题。以下是 C 语言建立链表并输出链表内容的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct node {
int coef;
int expo;
struct node *next;
};
void print_list(struct node *head)
{
struct node *ptr = head;
while (ptr != NULL) {
if (ptr->expo == 0) {
printf("%d", ptr->coef);
} else if (ptr->expo == 1) {
printf("%dx", ptr->coef);
} else {
printf("%dx^%d", ptr->coef, ptr->expo);
}
if (ptr->next != NULL) {
printf(" + ");
}
ptr = ptr->next;
}
printf("\n");
}
int main()
{
int n;
scanf("%d", &n);
struct node *head = NULL;
struct node *tail = NULL;
for (int i = 0; i < n; i++) {
int coef, expo;
scanf("%d %d", &coef, &expo);
struct node *new_node = (struct node *) malloc(sizeof(struct node));
new_node->coef = coef;
new_node->expo = expo;
new_node->next = NULL;
if (head == NULL) {
head = tail = new_node;
} else {
tail->next = new_node;
tail = new_node;
}
}
print_list(head);
return 0;
}
```
这个程序会先读取一个整数 n,表示一元多项式的项数。然后,它会循环读取 n 行输入,每行输入包括一个整数 coef 和一个整数 expo,分别表示该项的系数和指数。每读入一个输入,程序就会创建一个新的链表结点,并把这个结点加入到链表末尾。最后,程序会调用 `print_list` 函数来输出链表内容。
`print_list` 函数会遍历链表,并依次输出每个结点的值。对于每个结点,如果它的指数为 0,则只输出其系数;如果指数为 1,则输出 `coefx`;否则,输出 `coefx^expo`。如果一个结点不是链表的最后一个结点,则在输出后面加上一个加号和一个空格。最后,这个函数会输出一个换行符,以结束输出。
注意,这个程序中的链表是单向链表,每个结点只包括一个一元多项式的一项。如果需要表示完整的一元多项式,可以考虑使用一个数组来存储链表头指针,其中数组下标表示项的指数。
阅读全文