前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一元稀疏多项式计算 (数据结构实验)

一元稀疏多项式计算 (数据结构实验)

作者头像
用户2965768
发布2018-12-05 15:29:56
1.2K0
发布2018-12-05 15:29:56
举报
文章被收录于专栏:wym
代码语言:javascript
复制
#include <bits/stdc++.h>
using namespace std;
struct node{
	float coef;//系数
	int exp;//指数
	node * next; 
};

node * creat(node * l)
{
	float coef; int exp;
	l = new node;
	node * p,* q;
	
	scanf("%f %d",&coef,&exp);
	p=l;
	while(coef!=0||exp!=0)
	{
	 p->coef = coef;
	 p->exp = exp;
	 p->next = new node;
	 q = p;
	 p=p->next;
	scanf("%f %d",&coef,&exp);	
	} 
	q->next=NULL;
	return l;
}
void Print(node * l)
{
	node * q = l;
	while(q!=NULL)
	{
		if(q->coef>0&&l!=q&&l!=q)
		{
			cout<<"+";
		}
		cout<<q->coef<<"x^"<<q->exp;
		q=q->next;
	}
	cout<<"\n";
}
void sortList(node *l)
{
	node * p,*q;
	for(p=l;p!=NULL;p=p->next)
	{
		q=l;
		for(q=l;q->next!=NULL;q=q->next)
		if(p->exp<q->exp)
		{
			int tmpe; float tmpf;
			tmpe = p->exp;
			p->exp = q ->exp;
			q->exp =tmpe;
			tmpf = p->coef;
			p->coef = q ->coef;
			q->coef =tmpf;			 
		}
	}
}
node * merge(node *a,node *b,node *c,float flag)
{
	node *p,*q,*l,*lq;
	p=a; q=b; //coef系数 
	c=new node;
	l=c;
	while(p!=NULL&&q!=NULL)
	{
		if(p->exp < q->exp)
		{
		  l->coef = p->coef;
		  l->exp =p->exp;
		  l->next = new node;
		  lq = l; l = l->next; 
		  
		  l->coef = q->coef;
		  l->exp =q->exp;
		  l->next = new node;
		  lq = l; l = l->next; 
		  
		}else if(p->exp > q->exp)
		{
		  l->coef = q->coef;
		  l->exp =q->exp;
		  l->next = new node;
		  lq = l; l = l->next; 
			
		  l->coef = p->coef;
		  l->exp =p->exp;
		  l->next = new node;
		  lq = l; l = l->next;	
			
		}else 
		{
			l->coef = p->coef+(flag)*q->coef;
			l->exp = p->exp;
			lq=l; l->next = new node;
			l=l->next;
		}
		if(p!=NULL)
		p=p->next;
		if(q!=NULL)
		q=q->next;
	}
	l=new node;
	while(p!=NULL)
	{
		  l->coef = p->coef;
		  l->exp =p->exp;
		  l->next = new node;
		  lq = l; l = l->next; 
		  p=p->next;
	}
	
	while(q!=NULL)
	{
		  l->coef = q->coef;
		  l->exp =q->exp;
		  l->next = new node;
		  lq = l; l = l->next; 
		  q=q->next;
	}
	lq->next = NULL;
	return c;
}
int main()
{
	node *a,*b,*c;
	cout<<"please input in accordance with the format:  (***) \n";
	cout<<"the first formula\n";
	a = creat(a);
	cout<<"the second formula\n";
	b = creat(b);
	sortList(a);
	sortList(b);
	cout<<"the first formula: "; Print(a);
	cout<<"the second formula: ";Print(b);
	
	float plus=1,mins=-1;
	c = merge(a,b,c,plus);
	cout<<"plus: ";Print(c);
	c = merge(a,b,c,mins);
	cout<<"mins: ";Print(c);
} 

/*
3 1 -2 2 6 3 0 0

1 1 1 2 1 3 0 0
*/
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年11月02日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档