//Polynomial.cpp
#include"predefined.h"
#include"Polynomial.h"
#include"ExtenLinkedList.h"
void CreatPolyn(polynomial *P,int m)
//算法2.22:输入m项的系数和指数,建立表示一元多项式的有序链表。
{
Position h;
Link q;
int i;
ElemType e;
InitList_E(P);
h=GetHead_E(*P);
e.coef=0.0;
e.expn=-1;
SetCurElem_E(&h,e);
(*h).next=NULL;
for(i=1;i<=m;i++)
{
printf("▲请输入第%d组元素:",i);
scanf("%f,%d",&(e.coef),&(e.expn));
MakeNode_E(&q,e);
InsFirst_E(P,h,q);
h=(*h).next;
}
}
void DestroyPolyn(polynomial *P)
//销毁一元多项式P
{
DestroyList_E(P);
}
void PrintPolyn(polynomial P)
//打印输出一元多项式P
{
int i;
Link q;
q=(*P.head).next;
for(i=1;i<=P.len;i++)
{
if(i==1)
printf("%g",(*q).data.coef);
else
{
if((*q).data.coef>0)
{
printf("+");
printf("%g",(*q).data.coef);
}
else
{
printf("-");
printf("%g",-(*q).data.coef);
}
}
if((*q).data.expn)
{
printf("X");
if((*q).data.expn!=1)
printf("^%d",(*q).data.expn);
}
q=(*q).next;
}
}
int PolyLength(polynomial P)
//返回一元多项式P中的项数
{
return ListLength_E(P);
}
int cmp(term a,term b)
//依a的指数值<(或=)(或>)b的指数值,分别返回-1、0和+1。
{
if(a.expn<b.expn) return -1;
else if(a.expn==b.expn) return 0;
else return 1;
}
void AddPolyn(polynomial *Pa,polynomial *