您的位置:首页 > 其它

3268 多项式相加

2016-01-31 19:46 330 查看
#include <stdio.h>
#include <string.h>

struct node{
int dex;
int exp;
struct node *next;
}a,b;

node *Create(int n){

node *hp,*p=hp=new node,*temp;
int dex,exp;
while(n--){
scanf("%d%d",&dex,&exp);
temp = new node;
temp->dex=dex;
temp->exp=exp;
p->next=temp;
p=temp;
}
p->next=NULL;
return hp;
}

node *Add_ab(node *a,node *b){

node *ans,*p=ans=new node,*temp;
while(a&&b){
if(a->exp>b->exp){
temp = new node;
temp->dex=a->dex;
temp->exp=a->exp;
p->next=temp;
p=temp;
a=a->next;
}
else if(a->exp<b->exp){
temp = new node;
temp->dex=b->dex;
temp->exp=b->exp;
p->next=temp;
p=temp;
b=b->next;
}
else if(a->dex+b->dex==0){
a=a->next;
b=b->next;
}
else{
temp = new node;
temp->dex=a->dex+b->dex;
temp->exp=a->exp;
p->next=temp;
p=temp;
a=a->next;
b=b->next;
}
}
while(a){
temp = new node;
temp->dex=a->dex;
temp->exp=a->exp;
p->next=temp;
p=temp;
a=a->next;
}
while(b){
temp = new node;
temp->dex=b->dex;
temp->exp=b->exp;
p->next=temp;
p=temp;
b=b->next;
}
p->next=NULL;
return ans;
}

int main(){

int n,m;
node *ha,*hb,*hc,*temp;
scanf("%d%d",&n,&m);
ha=Create(n);
hb=Create(m);
hc=Add_ab(ha->next,hb->next);
temp = hc->next;
while(temp){
printf("%d %d",temp->dex,temp->exp);
temp=temp->next;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: