|
|
Polynomial addition is one of the application of the Linkedlist data Structure . Polynomial addition can be implemented with arrays as well . A computer cannot understand the polynomial and how to add two polynomials . The main variables to be declared for polynomial addition are :
1. Cofficient
2. power
3. address of the next term
Thus the required memory declaration for representation of a polynomial with integer coefficients are :
Also check : program for Queue in c++
The above code for Polynomial addition using Linkedlist in c++ is little lengthy . So You can download program for addition of Polynomials using Linked list in C++
1. Cofficient
2. power
3. address of the next term
Thus the required memory declaration for representation of a polynomial with integer coefficients are :
class nodewith these declarations we can write a program for polynomial addition using Linkedlist in C++
{
public :
int coeff;
int power;
node *next;
};
class polynomial
{
private :
node *head;
public :
polynomial()
{
head=NULL;
}
~polynomial();
void read();
void display();
};
Addition of Polynomials using LinkedList :
Mathematically we write the polynomial terms with same power under each other and then we add the coefficients . This is illustrated for addtion of two following polynomials .Algorithm for Polynomial Addition using Linkedlist :
- The terms of the polynomial are scanned from left to right .
- The term with powers that occur only in one polynomial are simply copied into the resulting polynomial .
- The coefficients of terms with same powers are added and then the new term is copied into the resulting polynomial .
Program for Polynomial addition using Linkedlist in C++
#include<iostream.h>
#include<iomanip.h>
#include<ctype.h>
class node
{
public :
int coeff;
int power;
node *next;
};
class polynomial
{
private :
node *head;
public :
polynomial()
{
head=NULL;
}
~polynomial();
void read();
void display();
void add(polynomial &p1,polynomial &p2);
void addnodeatend(int coef,int power);
};
void polynomial::add(polynomial &p1,polynomial &p2)
{
node *ptr1,*ptr2;
int powe;
int coef;
ptr1=p1.head;
ptr2=p2.head;
while((ptr1!=NULL)&&(ptr2!=NULL))
{
if(ptr1->power > ptr2->power)
{
coef=ptr1->coeff;
powe=ptr1->power;
ptr1=ptr1->next;
}
else if(ptr1->power < ptr2->power)
{
coef=ptr2->coeff;
powe=ptr1->power;
ptr2=ptr2->next;
}
else
{
coeff=ptr1->coeff+ptr2->coeff;
powe=ptr1->power;
ptr1=ptr1->next;
ptr2=ptr2->next;
}
if(coef!=0)
addnodeatend(coef,powe);
}
if(ptr1==NULL)
{
for(;ptr2!=NULL;pt2=ptr2->next)
addnodeatend(ptr2->coeff,ptr2->power);
}
else if(ptr2==NULL)
{
for(;pt1!=NULL;ptr1=ptr1->next)
addnodeatend(ptr1->coeff,ptr1->power);
}
}
void polynomial::addnodeatend(int coef,int power)
{
node *ptr1,*ptr2;
ptr1=new node;
ptr1->coeff=coef;
ptr1->power=powe;
ptr1->next=NULL;
if(head==NULL)
{
head=ptr1;
}
else
{
ptr2=head;
while(ptr2->next!=NULL)
{
ptr2=ptr2->next;
}
ptr2->next=ptr1;
}
}
void polynomial::read()
{
char ch;
int coef,powe;
cout<<"\nEnter the terms in descending order of power";
while(1)
{
cout<<"\nEnter the degree of x :";
cin>>powe;
cout<<"\nEnter the coefficient :";
cin>>coef;
addnodeatend(coef,powe);
cout<<"\nAny more term (Y/N) ? :";
cin>>ch;
if(toupper(ch)=='Y')
continue;
else
break;
}
}
void polynomial::display()
{
if(head!=NULL)
cout<<head->coeff<<"x^"<<head->power;
node *ptr=head;
for(ptr=ptr->next;ptr!=NULL;ptr=ptr->next)
{
if(ptr->coeff!=0)
{
if(ptr->coeff>0)
cout<<"+";
if(ptr->coeff<0)
{
cout<<"-";
ptr->coeff=-ptr->coeff;
}
if(ptr->power==0)
cout<<ptr->coeff;
else if(ptr->power==1)
cout<<ptr->coeff<<"x";
else
cout<<ptr->coeff<<"x^"<<ptr->power;
}
}
}
polynomial::~polynomial()
{
node *temp,*ptr=head;
while(ptr!=0)
{
temp=ptr;
ptr=ptr->next;
delete temp;
}
}
void main()
{
polynomial poly1,poly2,poly3;
cout<<"\nPolynomial to add two polynomials:";
cout<<"\n++++++++++++++++++++++++++++++++++++\n\n";
cout<<"Enter first polynomial\n";
poly1.read();
cout<<"\n\nEnter second polynomial\n";
poly2.read();
poly3.add(poly1,poly2);
cout<<"\nSum of polynomials\n\n";
poly1.display();
cout<<"\n\nand\n\n";
poly2.display();
cout<<"\n\nis\n\n";
poly3.display();
}
The above code for Polynomial addition using Linkedlist in c++ is little lengthy . So You can download program for addition of Polynomials using Linked list in C++


0 comments:
Post a Comment