当前位置:
文档之家› 数据结构——一元多项式的建立与相加
数据结构——一元多项式的建立与相加
#include<iostream>
#include <cmath>
using namespace std;
typedef struct PolyNode
{
int coef; //系数
int expn; //指数
struct PolyNode *next;
} *PNode; //多项式结点的指针
void InitPoly(PNode &head,PNode &p)
{
int n;
PNode s,p;
pa=pa->next;
pb=pb->next;
p=pc;
while (pa!=NULL && pb!=NULL)
{
if (pa->expn>pb->expn)
{
s=(PNode)malloc(sizeof(struct PolyNode));
s->coef=pa->coef;
{
if(i) //显示第一对的时候是不需要显示加号的
{
if (p->expn==1) cout<<p->coef<<"x";
else if (p->expn==0) cout<<p->coef<<endl;
else cout<<p->coef<<"x^"<<p->expn;
i=0;
}
else
{
if (p->expn==1) cout<<p->coef<<"+x";
else if (p->expn==0) cout<<"+"<<p->coef<<endl;
else cout<<"+"<<p->coef<<"x^"<<p->expn;
}
p=p->next;
}
cout<<endl<<endl;
}
void Addpoly(PNode &pa,PNode &pb,PNode &pc)
{
head=(PNode)malloc(sizeof(struct PolyNode));
head->next=NULL;
head->coef=0;
head->expn=-1;
p=head;
}
void CreatePoly(PNode &head,int a,int n)
{
PNode s;
s=(PNode)malloc(sizeof(struct PolyNode)); //建立新的结点
}
s=(PNode)malloc(sizeof(struct PolyNode)); //pc上还要再多建立一个节点
s->next=NULL;
p->next=s;
}
void Subpoly(PNode &pa,PNode &pb,PNode &pc)
{
}
int main()
{
PNode poly1,poly2,poly3;
Addpoly(p1,p2,poly3);
PrintPoly(p3);
cout<<endl;
cout<<"两个多项式相减得到新的多项式: "<<endl;
return 0;
}
PNode p1,p2,p3;
cout<<"请输入第一个一元多项式的系数和指数,以0 0为结束!!!"<<endl;
cout<<"指数请从大到小输入!!!"<<endl;
InitPoly(poly1,p1);
int a=1,m=1;
int i=1;
while(a!=0&&m!=0)
{
cout<<"第"<<i<<"对系数和指数分别是: ";
i=1;
while(b!=0&&n!=0)
{
cout<<"第"<<i<<"对系数和指数分别是: ";
cin>>b;
cin>>n;
CreatePoly(poly2,b,n);
i++;
}
PrintPoly(p2);
InitPoly(poly3,p3);
cout<<"两个多项式相加得到新的多项式: "<<endl;
s->next=NULL;
p->next=s;
p=s;
pb=pb->next;
}
else //两者的幂相等时
{
n=pa->coef+pb->coef;
if (n!=0)
{
s=(PNode)malloc(sizeof(struct PolyNode));
s->coef=n;
s->expn=pb->expn;
cin>>a;
cin>>m;
CreatePoly(poly1,a,m);
i++;
}
PrintPoly(p1);
cout<<"请输入第二个一元多项式的系数和指数,以0 0为结束!!!"<<endl;
cout<<"指数请从大到小输入!!!"<<endl;
InitPoly(poly2,p2);
int b=1,n=1;
s->next=NULL;
p->next=s;
p=s;
}
pa=pa->next;pb=pb->next;
}
}
while (pb=NULL)
{
s=(PNode)malloc(sizeof(struct PolyNode));
s->coef=pa->coef;
s->expn=pa->expn;
s->next=NULL;
s->coef=a;
s->expn=n;
s->next=NULL;
head->next=s;
head=s;
}
void PrintPoly(PNode head)
{
int i=1;//控制第一对系数指数的显示
head=head->next;//指向表头结点的下一个
PNode p;
p=head;
while ((p->next)!=NULL)
p->next=s;
p=s;
pa=pa->next;
}
while (pa=NULL)
{
s=(PNode)malloc(sizeof(struct PolyNode));
s->coef=pb->coef;
s->expn=pb->expn;
s->next=NULL;
p->next=s;
p=s;
pb=pb->next;
s->expn=pa->expn;
s->next=NULL;
p->next=s;பைடு நூலகம்
p=s;
pa=pa->next;
}
else if (pa->expn<pb->expn)
{
s=(PNode)malloc(sizeof(struct PolyNode));
s->coef=pb->coef;
s->expn=pb->expn;