稀疏多项式求和
题目:
代码:
#include <iostream>
using namespace std;
typedef struct PNode{
float coef; //系数
int expn; //指数
struct PNode *next;
}PNode,*Polynomial;
void create(Polynomial &p,int n){
p=new PNode;
p->next=NULL;
PNode *r=p;
for(int i=0;i<n;i++){
PNode *s=new PNode;
cin>>s->coef>>s->expn;
s->next=NULL;
r->next=s;
r=s;
}
}
void add(Polynomial &pa,Polynomial &pb,Polynomial &pc){
PNode *p1=pa->next;
PNode *p2=pb->next;
pc=new PNode;
PNode *p3=pc;
while(p1 && p2){
if(p1->expn < p2->expn){
p3->next=p1;
p3=p1;
p1=p1->next;
}else if(p1->expn == p2->expn){
if(p1->coef + p2->coef !=0){
p1->coef=p1->coef + p2->coef;
p3->next=p1;
p3=p1;
}
p1=p1->next;
p2=p2->next;
}else{
p3->next=p2;
p3=p2;
p2=p2->next;
}
}
p3->next=p1?p1:p2;
}
int main(){
Polynomial pa,pb,pc;
int n1,n2; //pa,pb多项式的大小
cin>>n1>>n2;
create(pa,n1);
create(pb,n2);
add(pa,pb,pc);
cout<<endl<<"pc:";
pc=pc->next;
while(pc){
cout<<pc->coef<<" "<<pc->expn<<"\t";
pc=pc->next;
}
return 0;
}