polynomial manipulation using c++

# include
# include

class poly
{
private:
struct polynode
{
float coeff;
int exp;
polynode *link;

}*p;
public:
poly();
void poly_append(float c,int e);
void display_poly();
void poly_add(poly &i1,poly &i2);
~poly();
};

poly::poly()
{
p=NULL;
}

void poly::poly_append(float c,int e)
{
polynode *temp=p;
if(temp==NULL)
{
temp=new polynode;
p=temp;
}
else
{
while(temp->link!=NULL)
temp=temp->link;
temp->link=new polynode;
temp=temp->link;
}
temp->coeff=c;
temp->exp=e;
temp->link=NULL;
}

void poly::display_poly()
{
polynode *temp=p;
int f=0;
cout< while(temp!=NULL)
{
if(f!=0)
{
if(temp->coeff>0)
cout<<"+";
else
cout<<" ";
}
if(temp->exp!=0)
cout<coeff<<"x^"<exp;
else
cout<coeff;
temp=temp->link;
f=1;
}
}


void poly::poly_add(poly &i1,poly &i2)
{
polynode *z;
if(i1.p==NULL && i2.p==NULL)
return;
polynode *temp1,*temp2;
temp1=i1.p;
temp2=i2.p;

while(temp1 !=NULL && temp2!=NULL)
{
if(p==NULL)
{
p=new polynode;
z=p;
}
else
{
z->link=new polynode;
z=z->link;
}

if(temp1->exp < temp2->exp)
{
z->coeff=temp2->coeff;
z->exp=temp2->exp;
temp2=temp2->link;
}
else
{
if(temp1->exp == temp2->exp)
{
z->coeff=temp1->coeff + temp2->coeff;
z->exp=temp1->exp;
temp1=temp1->link;
temp2=temp2->link;
}
}
}


while(temp1!=NULL)
{
if(p==NULL)
{
p=new polynode;
z=p;
}
else
{
z->link=new polynode;
z=z->link;
}
z->coeff=temp1->coeff;
z->exp=temp1->exp;
temp1=temp1->link;
}

while(temp2!=NULL)
{
if(p==NULL)
{
p=new polynode;
z=p;
}
else
{
z->link=new polynode;
z=z->link;
}
z->coeff=temp1->coeff;
z->exp=temp1->exp;
temp1=temp1->link;
}
while(temp2!=NULL)
{
if(p==NULL)
{
p=new polynode;
z=p;
}
else
{
z->link=new polynode;
z=z->link;
}
z->coeff=temp2->coeff;
z->exp=temp2->exp;
temp2=temp2->link;
}
z->link=NULL;
}

poly::~poly()
{
polynode *q;

while(p!=NULL)
{
q=p->link;
delete p;
p=q;
}
}

void main()
{
poly p1;
clrscr ();
p1.poly_append(1.4,5);
p1.poly_append(1.5,4);
p1.poly_append(1.7,2);
p1.poly_append(1.8,1);
p1.poly_append(1.9,0);
cout<<"\n First Polynomial :";
p1.display_poly();
poly p2;

p2.poly_append(1.5,6);
p2.poly_append(2.5,5);
p2.poly_append(-3.5,4);
p2.poly_append(4.5,3);
p2.poly_append(6.5,1);
cout<<"\n Second Polynomial :";
p2.display_poly();
poly p3;

p3.poly_add(p1,p2);
cout<<"\nResultant Polynomial :";
p3.display_poly();
}

Comments