Nov
28
2008
28
2008
C++ Program to Multiply two polynomials using linked list
C++ Program to Multiply two polynomials using linked list.
/**************************************************************
Author: Arun Vishnu M V
Web: www.arunmvishnu.com
Description: C++ Program to Multiply two polynomials using linked list.
***************************************************************/
#include<conio.h>
#include<iostream.h>
#include<process.h>
// Creating a NODE Structure
struct node
{
int coe,exp; // data
struct node *next; // link to next node and previous node
};
// Creating a class Polynomial
class polynomial
{
struct node *start,*ptrn,*ptrp;
public:
void get_poly(); // to get a polynomial
void show(); // show
void multiply(polynomial p1,polynomial p2); // Multiply polynomials
void sort(); // Sort Polynomials
};
void polynomial::get_poly() // Get Polynomial
{
char c='y';
ptrn=ptrp=start=NULL;
while(c=='y' || c=='Y')
{
ptrn=new node;
if(ptrp!=NULL)
ptrp->next=ptrn;
if(start==NULL)
start=ptrn;
ptrp=ptrn;
cout<<"\nEnter the coefficient: ";
cin>>ptrn->coe;
cout<<"Enter the exponent: ";
cin>>ptrn->exp;
ptrn->next=NULL;
cout<<"Enter y to add more nodes: ";
cin>>c;
}
return;
}
void polynomial::show() // Show Polynomial
{
struct node *ptr;
ptr=start;
while(ptr!=NULL)
{
cout<
coe<<"X^"<
exp<<" + ";
ptr=ptr->next;
}
cout<<"\b\b ";
}
// Multiplying
void polynomial::multiply(polynomial p1,polynomial p2)
{
struct node *p1ptr,*p2ptr,*ptri,*ptrj;
int exp,coe;
ptrn=ptrp=start=NULL;
p1ptr=p1.start;
p2ptr=p2.start;
while(p1ptr!=NULL) // Start multiplying
{
p2ptr=p2.start;
while(p2ptr!=NULL)
{
ptrn=new node;
ptrn->next=NULL;
if(start==NULL)
start=ptrn;
if(ptrp!=NULL)
ptrp->next=ptrn;
ptrn->coe=p1ptr->coe*p2ptr->coe;
ptrn->exp=p1ptr->exp+p2ptr->exp;
ptrp=ptrn;
p2ptr=p2ptr->next;
}
p1ptr=p1ptr->next;
} // end of multiplication
ptri=ptrj=start; // Normalising
ptrn=ptrp=start=NULL;
while(ptri!=NULL)
{
exp=ptri->exp;
coe=ptri->coe;
ptrj=ptri->next;
while(ptrj!=NULL)
{
if(ptrj->exp==ptri->exp)
{
coe=coe+ptrj->coe;
ptrj->coe=0;//ptrj_p->next=ptrj->next;
}
ptrj=ptrj->next;
}
if(coe!=0)
{
ptrn=new node;
ptrn->next=NULL;
if(start==NULL)
start=ptrn;
if(ptrp!=NULL)
ptrp->next=ptrn;
ptrn->coe=coe;
ptrn->exp=exp;
ptrp=ptrn;
}
ptri=ptri->next;
}
return;
}
void polynomial::sort() // Sort Polynomials
{
struct node *ptri,*ptrj;
int coe,exp;
ptri=ptrj=start;
while(ptri->next!=NULL)
{
ptrj=ptri->next;
while(ptrj!=NULL)
{
if(ptri->exp
exp)
{
coe=ptri->coe;
exp=ptri->exp;
ptri->coe=ptrj->coe;
ptri->exp=ptrj->exp;
ptrj->coe=coe;
ptrj->exp=exp;
}
ptrj=ptrj->next;
}
ptri=ptri->next;
}
return;
}
int main()
{
clrscr();
polynomial p1,p2,product;
cout<<"First Polynomial.\n";
p1.get_poly();
cout<<"\nSecond polynomial.\n";
p2.get_poly();
clrscr();
cout<<"\nThe First polynomial is: ";
p1.show();
cout<<"\nThe second polynomial is: ";
p2.show();
cout<<"\n\nThe product of two polynomials is: \n";
product.multiply(p1,p2);
product.sort();
product.show();
getch();
return 0;
}
//---------------------- END--------------------
Related Posts
Latest Posts
- Introducing Google Drive
- Google Account Activity gives you a monthly summary of your account activity across many Google products
- Apple released iOS 5.1
- You won’t be actually able to take 41MP photos using Nokia 808 PureView
- Apple Releases Mac OS X Mountain Lion 10.8 Developer Preview
- A walk down memory lane
- What is the real meaning of Facebook “Like”?
- Wish you and your family a very Happy and Prosperous New Year 2012!
- Import Orkut’s albums to Google+
- Download 100 Paid Android Apps(Like Fruit Ninja HD, BW, Smart Office etc. )For Free
Tags
apple
c and cpp
Cheats
download
downloads
Entertainment
Film
friendship
Fun
gadgets
Games
gmail
google
greetings
india
Internet
ipad
iphone
java script
linux
love
mac
microsoft
mobile
News
office
Orkut
Personal
photos
Programming
review
Security
software
source code
technology
Tips & Tricks
video
videos
virus
web
web development
windows
windows 7
worm
yahoo
Recent Comments
- Vikesh Kumar on C++ Program for QUICK SORT
- pratikchavan on C++ Program for QUICK SORT
- suraj on C++ Program Program for Binary Search.
- saravanan on Enabling REGEDIT and Task Manager
- VP on I Got My GirlFriend

An article by
thanks 4 listing program …
Hi everyone,
Can anyone send me the complete program of adding and multiplying two polynomials program using circular linked list in a very sample manner, it’s urgent…
Thanks in advance….
Thnx..i was using same logic but i don’t know why it was not executing…simply mistake may be there in my prgm….but its ok…
thanks for programming help.
sir
show some logic of dequeue.and b+ tree