Write a program to add two polynomials using a linked list
#include
#include
#include
struct poly_node
{
int
coeff, expo;
struct
poly_node *link;
};
typedef struct poly_node poly;
class polynode
{
public:
poly
*insert_polynode(int coeff, int expo, poly *polynomial);
poly
*create_polynomial();
void
display_polynomial(poly *p);
poly
*add_polynomial(poly *poly1, poly *poly2);
};
poly *polynode::insert_polynode(int coeff,
int expo, poly *polynomial)
{
poly
*newnode, *currptr, *prevnode;
newnode
= new poly;
newnode->coeff
= coeff;
newnode->expo
= expo;
newnode->link
= NULL;
if
(!polynomial)
{
return
newnode;
}
prevnode
= polynomial;
for
(currptr=polynomial ;currptr ;currptr=currptr->link )
{
prevnode
= (poly*)currptr;
}
prevnode->link
= newnode;
return
polynomial;
}
poly *polynode::create_polynomial()
{
int
coeff, expo;
poly
*polynomial = NULL;
while
(1)
{
cout
<< "\nEnter coefficient and
exponent :\t" ;
cin
>> coeff >> expo;
if
(coeff==0)
{
continue;
}
polynomial
= insert_polynode(coeff, expo, polynomial);
if
(expo==0)
{
break;
}
}
return
polynomial;
}
void polynode::display_polynomial(poly *p)
{
poly
*currptr;
for
(currptr=p ;currptr ;currptr=currptr->link )
{
if
(currptr->expo==0)
{
cout
<< currptr->coeff;
}
else
if (currptr->coeff!=0)
{
cout
<coeff << "X^" << currptr->expo
<< " + " ;
}
}
}
poly *polynode::add_polynomial(poly *poly1,
poly *poly2)
{
poly
*p1, *p2, *result=NULL;
p1
= poly1;
p2
= poly2;
while
(p1&&p2)
{
if
(p1->expo>p2->expo)
{
result
= insert_polynode(p1->coeff, p1->expo,result);
p1
= p1->link;
}
else
if (p1->expoexpo)
{
result
= insert_polynode(p2->coeff, p2->expo, result);
p2
= p2->link;
}
else
{
result
= insert_polynode(p1->coeff+p2->coeff, p1->expo, result);
p1
= p1->link;
p2
= p2->link;
}
}
while
(p1)
{
result
= insert_polynode(p1->coeff, p1->expo, result);
p1->link
= p1;
}
while
(p2)
{
result
= insert_polynode(p2->coeff, p2->expo, result);
p2->link
= p2;
}
return
result;
}
void main()
{
polynode
obj;
poly
*poly1 = NULL, *poly2 = NULL, *poly3 = NULL;
clrscr();
cout
<< "\nEnter First polynomial\n" ;
poly1
= obj.create_polynomial();
cout
<< "\n\n" ;
obj.display_polynomial(poly1);
cout
<< "\n\nEnter Second polynomial\n" ;
poly2
= obj.create_polynomial();
cout
<< "\n\n" ;
obj.display_polynomial(poly2);
cout
<< "\n\nAddition of two polynomials\n" ;
poly3
= obj.add_polynomial(poly1, poly2);
cout
<< "\n\n" ;
obj.display_polynomial(poly3);
getch();
}
Comments
Post a Comment