一元多项式加减
2016-03-27 21:51
204 查看
#include<iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef struct{
float coef;
int expn;
}elemtype;
typedef struct Lnode{
struct Lnode*next;
elemtype data;
}Lnode,*Linklist;
int InitLinklist(Linklist&L)
{
L=(Linklist)malloc(sizeof(Lnode));
if(!L)return ERROR;
L->next=NULL;
return 0;
}
int shuru(Linklist&L,int i)
{
Linklist S,A;A=L;
for(int j=0;j<i;j++)
{S=(Linklist)malloc(sizeof(Lnode));
cin>>S->data.coef;
cin>>S->data.expn;
S->next=A->next;
A->next=S;
A=S;
}
return 0;
}
int jiafa(Linklist &C,Linklist &A,Linklist &B){
Linklist m=C;
Linklist p=A->next;
Linklist q=B->next;
while(p&&q){
if(p->data.expn>q->data.expn&&p&&q){
Linklist v;
v=q;q=q->next;
v->next=m->next;
m->next=v;
m=v;}
else if(p->data.expn<q->data.expn){
Linklist u;
u=p;p=p->next;
u->next=m->next;
m->next=u;
m=u;}
else {
p->data.coef+=q->data.coef;
Linklist v;
v=p;p=p->next;
v->next=m->next;
m->next=v;
m=v;
q=q->next;}
}
if(p){m->next=p;}
else if(q){m->next=q;}
return 0;
}
int jianfa(Linklist &C,Linklist &A,Linklist &B)
{ Linklist m=C;
Linklist p=A->next;
Linklist q=B->next;
while(p&&q){
if(p->data.expn>q->data.expn){
q->data.coef=-(q->data.coef);
Linklist v;
v=q;q=q->next;
v->next=m->next;
m->next=v;
m=v;}
else if(p->data.expn<q->data.expn){
Linklist u;
u=p;p=p->next;
u->next=m->next;
m->next=u;
m=u;}
else{
p->data.coef-=q->data.coef;
Linklist v;
v=p;p=p->next;
v->next=m->next;
m->next=v;
m=v;
q=q->next;}
}
if(p){m->next=p;}
if(q){
m->next=q;
while(q)
{q->data.coef=-(q->data.coef);
q=q->next;}
}
return 0;
}
int shuchu(Linklist&L){
Linklist A=L->next;
cout&
4000
lt;<A->data.coef<<"x^"<<A->data.expn;
A=A->next;
while(A){
if(A->data.coef>=0)
cout<<"+"<<A->data.coef<<"x^"<<A->data.expn;
else
cout<<A->data.coef<<"x^"<<A->data.expn;
A=A->next;
}
return 0;
}
int main(){
int i;
Linklist L,M,N,S,P,Q;
InitLinklist(L);
InitLinklist(M);
InitLinklist(N);
InitLinklist(S);
InitLinklist(P);
InitLinklist(Q);
cout<<"关于次数从小到大输入多项式(每一项先输入系数后输入次数)"<<endl;
cout<<"输入两式做加法和减法运算"<<endl;
cout<<"请输入项数";
cin>>i;
shuru(L,i);
cout<<"您输入的是:"<<endl<<"y1=";
shuchu(L);cout<<endl;
cout<<"请输入项数";
cin>>i;
shuru(M,i);
cout<<"您输入的是:"<<endl<<"y2=";
shuchu(M);cout<<endl;
cout<<"y1+y2=";
jiafa(N,L,M);
shuchu(N);cout<<endl;
cout<<"请输入项数";
cin>>i;
shuru(P,i);
cout<<"您输入的是:"<<endl<<"y1=";
shuchu(P);cout<<endl;
cout<<"请输入项数";
cin>>i;
shuru(Q,i);
cout<<"您输入的是:"<<endl<<"y2=";
shuchu(Q);cout<<endl;
cout<<"y1-y2=";
jianfa(S,P,Q);
shuchu(S);cout<<endl;
return 0;
}
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef struct{
float coef;
int expn;
}elemtype;
typedef struct Lnode{
struct Lnode*next;
elemtype data;
}Lnode,*Linklist;
int InitLinklist(Linklist&L)
{
L=(Linklist)malloc(sizeof(Lnode));
if(!L)return ERROR;
L->next=NULL;
return 0;
}
int shuru(Linklist&L,int i)
{
Linklist S,A;A=L;
for(int j=0;j<i;j++)
{S=(Linklist)malloc(sizeof(Lnode));
cin>>S->data.coef;
cin>>S->data.expn;
S->next=A->next;
A->next=S;
A=S;
}
return 0;
}
int jiafa(Linklist &C,Linklist &A,Linklist &B){
Linklist m=C;
Linklist p=A->next;
Linklist q=B->next;
while(p&&q){
if(p->data.expn>q->data.expn&&p&&q){
Linklist v;
v=q;q=q->next;
v->next=m->next;
m->next=v;
m=v;}
else if(p->data.expn<q->data.expn){
Linklist u;
u=p;p=p->next;
u->next=m->next;
m->next=u;
m=u;}
else {
p->data.coef+=q->data.coef;
Linklist v;
v=p;p=p->next;
v->next=m->next;
m->next=v;
m=v;
q=q->next;}
}
if(p){m->next=p;}
else if(q){m->next=q;}
return 0;
}
int jianfa(Linklist &C,Linklist &A,Linklist &B)
{ Linklist m=C;
Linklist p=A->next;
Linklist q=B->next;
while(p&&q){
if(p->data.expn>q->data.expn){
q->data.coef=-(q->data.coef);
Linklist v;
v=q;q=q->next;
v->next=m->next;
m->next=v;
m=v;}
else if(p->data.expn<q->data.expn){
Linklist u;
u=p;p=p->next;
u->next=m->next;
m->next=u;
m=u;}
else{
p->data.coef-=q->data.coef;
Linklist v;
v=p;p=p->next;
v->next=m->next;
m->next=v;
m=v;
q=q->next;}
}
if(p){m->next=p;}
if(q){
m->next=q;
while(q)
{q->data.coef=-(q->data.coef);
q=q->next;}
}
return 0;
}
int shuchu(Linklist&L){
Linklist A=L->next;
cout&
4000
lt;<A->data.coef<<"x^"<<A->data.expn;
A=A->next;
while(A){
if(A->data.coef>=0)
cout<<"+"<<A->data.coef<<"x^"<<A->data.expn;
else
cout<<A->data.coef<<"x^"<<A->data.expn;
A=A->next;
}
return 0;
}
int main(){
int i;
Linklist L,M,N,S,P,Q;
InitLinklist(L);
InitLinklist(M);
InitLinklist(N);
InitLinklist(S);
InitLinklist(P);
InitLinklist(Q);
cout<<"关于次数从小到大输入多项式(每一项先输入系数后输入次数)"<<endl;
cout<<"输入两式做加法和减法运算"<<endl;
cout<<"请输入项数";
cin>>i;
shuru(L,i);
cout<<"您输入的是:"<<endl<<"y1=";
shuchu(L);cout<<endl;
cout<<"请输入项数";
cin>>i;
shuru(M,i);
cout<<"您输入的是:"<<endl<<"y2=";
shuchu(M);cout<<endl;
cout<<"y1+y2=";
jiafa(N,L,M);
shuchu(N);cout<<endl;
cout<<"请输入项数";
cin>>i;
shuru(P,i);
cout<<"您输入的是:"<<endl<<"y1=";
shuchu(P);cout<<endl;
cout<<"请输入项数";
cin>>i;
shuru(Q,i);
cout<<"您输入的是:"<<endl<<"y2=";
shuchu(Q);cout<<endl;
cout<<"y1-y2=";
jianfa(S,P,Q);
shuchu(S);cout<<endl;
return 0;
}
相关文章推荐
- HDU5634 Rikka with Phi(线段树)
- Linux 线程编程
- 图片的非线性变换的实验
- 数据结构 1、概述 特性、分类、复杂性分析
- php curl采集
- 抽象类与接口
- 破解Unity5.3.4f1
- 事务(Transaction)
- 何为大,世间没有比生命更大,珍惜生命
- angular 双向绑定原理
- smdk210 uboot移植
- linux tar命令运维实践
- 获取微信XML格式中传来的图片并保存到本地
- RunLoop应用场景
- 设计模式系列之一:简单工厂模式
- 《MySQL必知必会学习笔记》:数据处理函数
- httpclient 4.5.1---连接管理器
- Ruby官方文档翻译(Ruby官方文档中文版)
- Dubbo学习小记
- QT错误:collect2:ld returned 1 exit status