当前位置:文档之家› 一元多项式相家问题

一元多项式相家问题

一元多项式相加问题
# include<iostream.h>
typedef struct node{
float coef;
int exp;
int flg;
struct node *next;
}PolyNode,*PolyList;
PolyNode *head_a,*head_b,*head_c;
PolyList A,B,C;
PolyNode *Creat_PolyNode()
{
PolyNode *s,*r;
PolyList L;
float x;int y;
L=new PolyNode;
L->next=NULL;
r=L;
cin>>x>>y;
while(x||y) //输0的时候输入【0,另一个链表有的指数】{
s=new PolyNode;
s->coef=x;
s->exp=y;
r->next=s;
r=s;
cin>>x>>y;
}
r->next=NULL;
return L;
}
void Out_PolyNode(PolyNode *L,float a[100],int b[100]) {
PolyNode *p;int i=0,j=0;
p=L->next;
if(p==NULL)
cout<<"0";
while(p)
{
a[i]=p->coef;
b[i]=p->exp;
p=p->next;
i++,j++;
}
for(i=0;i<j;i++)
cout<<"["<<a[i]<<","<<b[i]<<"]"<<" ";
cout<<endl;
}
PolyNode *Plus_PolyNode(PolyNode *A,PolyNode *B) {
PolyNode *r,*p,*q,*s,*L;
L=new PolyNode;
r=L;
p=A->next,q=B->next;
while(p&&q)
{
if(p->exp==q->exp)
{
s=new PolyNode;
s->coef=p->coef+q->coef;
if(s->coef==0)
{
p=p->next;
q->flg=1;
}
else
{
s->exp=p->exp;
r->next=s;
r=s;
p->flg=1;
q->flg=1;
p=p->next;
q=B->next;
}
}
else if(p->exp!=q->exp&&q->next==NULL)
{
s=new PolyNode;
s->coef=p->coef;
s->exp=p->exp;
r->next=s;
r=s;
p->flg=1;
p=p->next;
q=B->next;
}
else
q=q->next;
}
q=B->next;
while(q)
{
if(q->flg!=1)
{
s=new PolyNode;
s->coef=q->coef;
s->exp=q->exp;
r->next=s;
r=s;
q->flg=1;
}
q=q->next;
}
r->next=NULL;
return L;
}
void main()
{
PolyNode *A,*B,*C;float a[100];int b[100];
cout<<"输入第一个多项式,按系数-指数形式输入子项"<<endl;
A=Creat_PolyNode();
cout<<"输出一元多项式"<<endl;
Out_PolyNode(A,a,b);
cout<<"输入第二个多项式,按系数-指数形式输入子项"<<endl;
B=Creat_PolyNode();
cout<<"输出一元多项式"<<endl;
Out_PolyNode(B,a,b);
C=Plus_PolyNode(A,B);
cout<<"两式多项式相加得"<<endl;
Out_PolyNode(C,a,b);
}。

相关主题