首页 > 其他 > 详细

3268 多项式相加

时间:2016-01-31 21:26:16      阅读:176      评论:0      收藏:0      [点我收藏+]
#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;
}

3268 多项式相加

原文:http://www.cnblogs.com/huaixiaohai2015/p/5173847.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!