稀疏多项式相加
#include <stdio.h>
#define MAXSIZE 100
#define OVERFLOW 0
#define OK 1
#define ERROR 0
int main(){
}
//单链表的结构
typedef struct PNode{
float coef;//系数
int expn;//指数
struct PNode *next;
} PNode,*Polynomial;
//多项式创建
void CreatePolyn(Polynomial &P,int n){
P=new PNode;
P->next=NULL;
for(int i=0;i<n;i++){
PNode *s=new PNode;
scanf("%f%d",&s->coef,&s->expn);
s->next=NULL;
P->next=s;
P=s;
}
}
//多项式的相加
void AddPolyn(Polynomial &Pa,Polynomial &Pb){
PNode *p1=Pa->next;
PNode *p2=Pb->next;
PNode *p3=Pa;
while(p1&&p2){
if(p1->expn==p2->expn){
float sum=p1->coef+p2->coef;
if(sum==0){
p1=p1->next;
p2=p2->next;
}else {
p1->coef=sum;
p3->next=p1;
p3=p1;
p1=p1->next;
p2=p2->next;
}
}else if(p1->expn<p2->expn){
p3->next=p1;
p3=p1;
p1=p1->next;
}else{
p3->next=p2;
p3=p2;
p2=p2->next;
}
}
p3->next=p1?p1:p2;
}
//欢迎广大网友提出意见,谢谢