//多项式的加法和乘法
#include<iostream>
using namespace std;
struct Data{
double coef;
int expn;
};
struct LNode{
Data data;
LNode *next;
};
LNode*create(LNode*L,int n);
int compare(int x,int y);
void print(LNode*pc);
LNode*Add(LNode*pa,LNode*pb);//加法
LNode*Mutiply(LNode*pa,LNode*pb);//乘法
void sort(LNode*L);
int main()
{
LNode*pa,*pb,*pc;
int n1,n2;
cout<<" 请 输 入 第 一 个 多 项 式 的 项 数
n1"<<endl;
cin>>n1;
pa=NULL;
pa=create(pa,n1);
cout<<"第一个多项式为"<<endl;
sort(pa);
print(pa);
cout<<" 请 输 入 第 二 个 多 项 式 的 项 数
n2"<<endl;
cin>>n2;
pb=NULL;
pb=create(pb,n2);
cout<<"第二个多项式为"<<endl;
sort(pb);
print(pb);
pc=Add(pa,pb);
cout<<"多项式的和为"<<endl;
print(pc);
cout<<"多项式的积为"<<endl;
pc=Mutiply(pa,pb);
print(pc);
return 0;
}
LNode*create(LNode*L,int n)
{
L=new LNode;
LNode*p,*q;
q=L;
cout<<"输入多项式各项的系数和指数"<<endl;
for(int i=0;i<n;i++)
{
p=new LNode;
cin>>p->data.coef>>p->data.expn;
q->next=p;
q=p;
}
q->next=NULL;
return L;
}
int compare(int x,int y)
{
if(x>y) return 1;
else if(x==y) return 0;
else return -1;
}
void print(LNode*p)
{
LNode*q;
q=p->next;
if(q==NULL) cout<<0<<endl;;
while(q!=NULL)
{
cout<<q->data.coef<<"x^"<<q->data.expn<<"+";
q=q->next;
}
cout<<endl;
}