您的位置:首页 > 其它

多项式

2016-05-11 09:56 302 查看
//简单的一维数组,适合稠密多项式
#include <stdio.h>
#include <stdlib.h>
#define MaxDegree 1000
typedef struct {
int CoeffArray[MaxDegree+1];
int HighPower;
} *Polynomial;

void ZeroPolynomial(Polynomial poly)
{
for (int i = 0; i <= MaxDegree; ++i) {
poly->CoeffArray[i] = 0;
}
poly->HighPower = 0;
}

int Max(int a, int b)
{
return a > b ? a : b;
}
//多项式相加
void AddPolynomial(const Polynomial Poly1, const Polynomial Poly2, Polynomial PolySum)
{
ZeroPolynomial(PolySum);
PolySum->HighPower = Max(Poly1->HighPower, Poly2->HighPower);

for (int i =  PolySum->HighPower; i >= 0; --i) {
PolySum->CoeffArray[i] = Poly1->CoeffArray[i] + Poly2->CoeffArray[i];
}
}
//多项式相乘
void MultPolynomial(const Polynomial Poly1, const Polynomial Poly2, Polynomial PolyProd)
{
ZeroPolynomial(PolyProd);
PolyProd->HighPower = Poly1->HighPower + Poly2->HighPower;

if (PolyProd->HighPower > MaxDegree)
exit(1);
else
for (int i = 0; i <= Poly1->HighPower; ++i)
for (int j = 0; j <= Poly2->HighPower; ++j)
PolyProd->CoeffArray[i+j] += Poly1->CoeffArray[i] * Poly2->CoeffArray[j];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: