运用c语言的线性表实现上述程序
时间: 2024-10-20 22:10:22 浏览: 17
在C语言中,我们可以使用结构体来表示多项式的项,并使用链表的数据结构来存储多项式的各项。以下是使用C语言实现求两个一元多项式和的一个简单示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义多项式项的结构体
typedef struct {
int coefficient;
int exponent;
} Term;
// 插入新项到链表
void insert(Term **head, int coef, int exp) {
Term *new_term = (Term *)malloc(sizeof(Term));
new_term->coefficient = coef;
new_term->exponent = exp;
if (*head == NULL) {
*head = new_term;
} else {
Term *current = *head;
while (current->exponent > exp) {
current = current->next;
}
new_term->next = current->next;
current->next = new_term;
}
}
// 打印链表中的所有项
void print_list(Term *head) {
Term *temp = head;
while (temp != NULL) {
printf("%d %d ", temp->coefficient, temp->exponent);
temp = temp->next;
}
printf("\n");
}
int main() {
Term *poly1_head = NULL, *poly2_head = NULL;
int num_terms1, num_terms2, coef1, exp1, coef2, exp2;
// 输入第一个多项式的项
scanf("%d", &num_terms1);
for (int i = 0; i < num_terms1; ++i) {
scanf("%d %d", &coef1, &exp1);
insert(&poly1_head, coef1, exp1);
}
// 输入第二个多项式的项
scanf("%d", &num_terms2);
for (int i = 0; i < num_terms2; ++i) {
scanf("%d %d", &coef2, &exp2);
insert(&poly2_head, coef2, exp2);
}
// 求和
Term *result_head = NULL;
Term *current1 = poly1_head, *current2 = poly2_head;
while (current1 != NULL || current2 != NULL) {
if (current1 != NULL && (current2 == NULL || current1->exponent <= current2->exponent)) {
insert(&result_head, current1->coefficient, current1->exponent);
current1 = current1->next;
} else {
insert(&result_head, current2->coefficient, current2->exponent);
current2 = current2->next;
}
}
// 输出结果
print_list(result_head);
return 0;
}
```
这个程序首先读取每个多项式的项,然后通过`insert`函数将它们添加到链表中。求和时,我们比较两个链表的当前节点,选择较大的系数和较小的指数插入到结果链表中。最后,打印出结果链表的项。
运行此程序时,需要提供符合格式的输入样例。例如,对于上面提供的输入样例,可以按照提示逐行输入。
阅读全文