#include "common.h"
#include "Polyn.h"
void CreateList(LinkList *P)
{
(*P)=(polynomial) malloc(sizeof (PolyNode));
(*P)->next=NULL;
(*P)->coef=0;
(*P)->exp=-1;//设立头结点并把第一个结点的系数值赋为0,指数值赋为-1
}
void ListInsert(LinkList *P,float c,int e)
{
(*P)=(polynomial) malloc(sizeof (PolyNode));
(*P)->next->coef=c;
(*P)->next->exp=e;
(*P)->next->next=NULL;
}//将输入的系数与指数插到当前结点的后面
void PrintPolyn(polynomial P)
{
float x;
int y;
while(*P)
{
P=P->next;
x=P->coef;
y=P->exp;
if(x==0)break;//系数为0
if(x==1)//系数为1
printf("x^%d,y);
else if(y==1)//指数为1
printf("%.2fx",x);
else if(y==0)//指数为0
{
printf("%.2f",x);
}
else
printf("%.2fx^%d",x,y);
}//PrintPolyn
void AddPolyn(polynomial *Pa,polynomial *Pb)
{
polynomial Pc;
while((*Pa)&&(*Pb))
{
if(Pa->exp==Pb->exp)
{
(*Pc)->exp=(*Pa)->exp;
(*Pc)->coef=(*Pa)->coef+(*Pb)->coef;
Pa++;
Pb++;
Pc++;
}
else if(Pa->exp<Pb->exp)
{
(*Pc)->exp=(*Pa)->exp;
(*Pc)->coef=(*Pa)->coef;
Pa++; Pc++;
}
else(Pa->exp>Pb->exp)
{
(*Pc)->exp=(*Pb)->exp;
(*Pc)->coef=(*Pb)->coef;
Pb++; Pc++;
}}
while((*Pa)==0)
{
(*Pc)->exp=(*Pb)->exp;
(*Pc)->coef=(*Pb)->coef;
Pb++;Pc++;
}
while((*Pb)==0)
{
(*Pc)->exp=(*Pa)->exp;
(*Pc)->coef=(*Pa)->coef;
Pa++;Pc++;
}
PrintPolyn(polynomial Pc);
}//AddPloyn