#include
#include
#include
using namespace std;
typedef struct Lnode
{ float coef; //系数
int exp; //指数
struct Lnode *next;
}LNode,*LinkList;
void CreatPolyn(LinkList &L,int m)
{
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL; //建立一个带头结点的单链表
LinkList p,q;
cout<<"请依次输入各项的系数和指数"<
{
p=(LinkList)malloc(sizeof(LNode));
cin>>p->coef>>p->exp;
if(L->next==NULL) L->next=p;
else q->next=p;
p->next=NULL;
q=p;
}
}
void output(LinkList h) //输出一元多项式的函数
{ if(h->next==NULL)
cout<<0;
else
{ h=h->next;
cout<
while(h->next!=NULL)
{ h=h->next;
if(h->coef>0)
cout<<'+'<
else
cout<
}
}
}
LinkList add(LinkList a,LinkList b)//加法函数
{ LinkList p,q,r,t;
int s;
p=a->next;
q=b->next;
r=a;
while(p!=NULL&&q!=NULL)
{ if(p->exp < q->exp)
{ r->next=p;
r=r->next;
p=p-> next;
}
else if(p->exp > q->exp)
{ r->next=q;
r=r->next;
q=q-> next;
}
else
{ s=p->coef+q->coef;
if(s!=0)
{ p->coef=s;
r->next=p;
r=r->next;
p=p->next;
t=q;
q=q->next;
free(t);
}
else
{ t=p;
p=p->next;
free(t);
t=q;
q=q->next;
free(t);
}
}
}
if(p!=NULL)
r->next=p;
else r->next=q;
return(a);
}
LinkList min(LinkList a, LinkList b)//减法函数
{ LinkList p,q,r,t;
int s;
p=a->next;
q=b->next;
r=a;
while(p!=NULL&&q!=NULL)
{ if(p->exp < q->exp)
{ r->next=p;
r=r->next;
p=p->next;
}
else if(p->exp > q->exp)
{ q->coef=-q->coef;
r->next=q;
r=r-> next;
q=q-> next;
}
else
{ s=p->coef-q->coef;
if(s!=0)
{ p->coef=s;
r->next=p;
r=r->next;
p=p->next;
t=q;
q=q->next;
free(t);
}
else
{ t=p;
p=p->next;
free(t);
t=q;
q=q->next;
free(t);
if(p==NULL&&q==NULL)
r-> next=NULL;
}
}
}
if(p!=NULL)
r-> next=p;
else
{ while(q!=NULL)
{ q->coef=-q-> coef;
r->next=q;
r=r->next;
q=q->next;
}
}
return(a);
}
int main() //主函数
{ LinkList pa,pb,pc;
int i,j,k;
cout<<"******一元多项式加减法******"<
CreatPolyn(pa,i);
cout<<"A(x)=";
output(pa);
cout<
CreatPolyn(pb,j);
cout<<"B(x)=";
output(pb);
cout<
if(k==1)
{ pc=add(pa,pb);
cout<<"C(x)=A(x)+B(X)=";
output(pc);
cout<
}
if(k==2)
{ pc=min(pa,pb);
cout<<"C(x)=A(x)-B(x)=";
output(pc);
cout<
else exit(0);
return 0;
}