用c语言写一下,不用链表
时间: 2024-10-29 19:25:23 浏览: 3
在C语言中,如果你不想使用链表结构存储多项式系数和指数,你可以直接创建一个数组来表示一元多项式的各个项。以下是一个简单的例子,用于表示一元二次多项式(最高次幂为2):
```c
#include <stdio.h>
typedef struct {
int exponent; // 次方
double coefficient; // 系数
} Term;
// 用于比较Term结构的指针,按照exponent降序
int compareTerms(Term* a, Term* b) {
return a->exponent > b->exponent ? 1 : (a->exponent < b->exponent ? -1 : 0);
}
void addPolynomials(Term* poly1, Term* poly2, int maxDegree) {
int i = 0;
for (; i < maxDegree; i++) {
if (poly1[i].exponent == poly2[i].exponent) { // 如果系数相同,相加
poly1[i].coefficient += poly2[i].coefficient;
} else if (poly1[i].exponent < poly2[i].exponent) { // 如果poly1比poly2小,插入
break;
}
}
for (i++; i < maxDegree; i++) { // 将poly2剩余部分插入到poly1相应位置
poly1[i] = poly2[i];
}
}
int main() {
Term poly1[3] = {{0, 2}, {1, 4}, {2, 6}}; // 2x^2 + 4x + 6
Term poly2[3] = {{0, 3}, {1, 5}, {2, 1}}; // 3x^2 + 5x + 1
// 添加两个多项式
addPolynomials(poly1, poly2, sizeof(poly1)/sizeof(poly1[0]));
// 打印结果
for (int i = 0; i < sizeof(poly1)/sizeof(poly1[0]); i++) {
printf("x^%d: %f\n", poly1[i].exponent, poly1[i].coefficient);
}
return 0;
}
```
在这个示例中,我们假设输入的多项式最多是一次三项式。`addPolynomials`函数首先比较两个多项式在同一度数下的系数,然后将较大的值的项添加到较小值的对应位置。如果遇到更大的指数,就不再向后查找并简单地插入新的项。
阅读全文