您的位置:首页 > 其它

一元多项式加减

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: