Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as C++ by abc ( 6 years ago )
#include<iostream>
#include<stdlib.h>
using namespace std;
struct node
{
int data;
int data2;
struct node *next;
}*q,*p,*r,*s,*t,*u,*v,*temp,*px=NULL,*qx=NULL,*fx=NULL;
class polynomial
{
public:
int val,x,key,k,c,a;
void getdata()
{
cout<<"Enter first polynomial expression"<<endl<<endl;
insert();
cout<<"Enter second polynomial expression"<<endl<<endl;
insert2();
print();
print2();
addition();
print3();
}
void insert()
{
x=1;
do
{
cout<<"Enter the coefficient"<<endl;
cin>>val;
p=(struct node*)malloc(sizeof(node));
p->data=val;
cout<<"Enter the exponent"<<endl;
cin>>val;
p->data2=val;
if(px==NULL)
{
p->next=NULL;
px=p;
}
else
{
q=px;
while(q->next!=NULL)
{
q=q->next;
}
q->next=p;
p->next=NULL;
}
cout<<"Insert again? 1.Yes 2.No"<<endl;
cin>>a;
if(a==2)
{
x=0;
}
}
while(x==1);
}
void insert2()
{
x=1;
do
{
cout<<"Enter the coefficient"<<endl;
cin>>val;
p=(struct node*)malloc(sizeof(node));
p->data=val;
cout<<"Enter the exponent"<<endl;
cin>>val;
p->data2=val;
if(qx==NULL)
{
p->next=NULL;
qx=p;
}
else
{
q=qx;
while(q->next!=NULL)
{
q=q->next;
}
q->next=p;
p->next=NULL;
}
cout<<"Insert again? 1.Yes 2.No"<<endl;
cin>>a;
if(a==2)
{
x=0;
}
}
while(x==1);
}
void addition()
{
p=px;
q=qx;
//s=fx;
while(p!=NULL && q!=NULL)
{
if(p->data2==q->data2)
{
//cout<<"hi hi hi"<<endl<<endl;
s=(struct node*)malloc(sizeof(node));
s->data=p->data+q->data;
s->data2=q->data2;
//cout<<"hi hi hi"<<endl<<endl;
if(fx==NULL)
{
s->next=NULL;
//cout<<"hi hi hi"<<endl<<endl;
fx=s;
}
else
{
t=fx;
//cout<<"hi2 hi2 hi2"<<endl<<endl;
while(t->next!=NULL)
{
//cout<<"hi3 hi3 hi3"<<endl<<endl;
t=t->next;
}
t->next=s;
s->next=NULL;
}
p=p->next;
q=q->next;
}
else
{
if(p->data2>q->data2)
{
s=(struct node*)malloc(sizeof(node));
s->data=p->data;
s->data2=p->data2;
p=p->next;
}
else
{
s=(struct node*)malloc(sizeof(node));
s->data=q->data;
s->data2=q->data2;
q=q->next;
}
if(fx==NULL)
{
s->next=NULL;
fx=s;
}
else
{
t=fx;
while(t->next!=NULL)
{
t=t->next;
}
t->next=s;
s->next=NULL;
}
}
}
if(p!=NULL)
{
r->next=p;
}
if(q!=NULL)
{
r->next=q;
}
}
/*void insert()
{
x=1;
do
{
cout<<"Enter the coefficient"<<endl;
cin>>val;
p=(struct node*)malloc(sizeof(node));
p->data=val;
cout<<"Enter the exponent"<<endl;
cin>>val;
p->data2=val;
if(px==NULL)
{
p->next=NULL;
px=p;
}
else
{
p->next=px;
px=p;
}
cout<<"Insert again? 1.Yes 2.No";
cin>>a;
if(a==2)
{
x=0;
}
}
while(x==1);
}
void insert2()
{
x=1;
do
{
cout<<"Enter the coefficient"<<endl;
cin>>val;
p=(struct node*)malloc(sizeof(node));
p->data=val;
cout<<"Enter the exponent"<<endl;
cin>>val;
p->data2=val;
if(qx==NULL)
{
p->next=NULL;
qx=p;
}
else
{
p->next=qx;
qx=p;
}
cout<<"Insert again? 1.Yes 2.No";
cin>>a;
if(a==2)
{
x=0;
}
}
while(x==1);
}
void insert_bp()
{
c=0;
cout<<"Enter the key element"<<endl;
cin>>key;
cout<<"Enter the element you want to insert before key element"<<endl;
cin>>val;
p=(struct node*)malloc(sizeof(node));
p->data=val;
if(list==NULL)
{
cout<<"List is empty"<<endl<<endl;
}
else
{
q=list;
while(q->next!=NULL && q->data!=key)
{
r=q;
q=q->next;
c=1;
}
if(c==0 && q->data==key)
{
p->next=q;
list=p;
}
else if(q->data==key)
{
r->next=p;
p->next=q;
}
else
{
cout<<"Key element not found"<<endl<<endl;
}
}
}
void insert_ap()
{
cout<<"Enter the key element"<<endl;
cin>>key;
cout<<"Enter the element you want to insert after key element"<<endl;
cin>>val;
p=(struct node*)malloc(sizeof(node));
p->data=val;
if(list==NULL)
{
cout<<"List is empty"<<endl<<endl;
}
else
{
q=list;
while(q->next!=NULL && q->data!=key)
{
q=q->next;
r=q->next;
}
if(q->data==key)
{
q->next=p;
p->next=r;
}
else
{
cout<<"Key element not found"<<endl<<endl;
}
}
}
void delete_b()
{
if(list!=NULL)
{
p=list;
list=list->next;
free(p);
}
else
{
cout<<"Cannot delete list is empty"<<endl<<endl;
}
}
void delete_e()
{
if(list==NULL)
{
cout<<"Cannot delete list is empty"<<endl<<endl;
}
else
{
if(list->next!=NULL)
{
q=list;
while(q->next!=NULL)
{
r=q;
q=q->next;
}
free(q);
r->next=NULL;
}
else
{
q=list;
free(q);
list=NULL;
}
}
}
void delete_p()
{
c=0;
if(list==NULL)
{
cout<<"Cannot delete list is empty"<<endl<<endl;
}
else
{
cout<<"Enter the element you want to delete"<<endl;
cin>>key;
q=list;
while(q->next!=NULL && q->data!=key)
{
r=q;
q=q->next;
c=1;
}
if(q->data==key && c==0)
{
s=q->next;
free(q);
if(s!=NULL)
{
list=s;
}
else
{
list=NULL;
}
}
else if(q->data==key && c==1)
{
s=q->next;
free(q);
if(s!=NULL)
{
r->next=s;
}
else
{
r->next=NULL;
}
}
else
{
cout<<endl;
cout<<"Key element not found"<<endl<<endl;
}
}
}
void count()
{
int count=0;
q=list;
while(q!=NULL)
{
q=q->next;
count++;
}
cout<<endl;
cout<<"Count= "<<count<<endl<<endl;
}
void sort()
{
int t;
q=list;
while(q!=NULL)
{
p=list;
while(p!=NULL)
{
if(p->next!=NULL)
{
r=p->next;
if(p->data > r->data)
{
t=p->data;
p->data=r->data;
r->data=t;
}
}
p=p->next;
}
q=q->next;
}
}
void reverse()
{
temp=NULL;
q=s=list;
r=q->next;
while(r!=NULL)
{
temp=q;
q=r;
r=q->next;
q->next=temp;
}
list=r;
}*/
void print()
{
if(px==NULL)
{
cout<<"List is empty"<<endl<<endl;
}
else
{
q=px;
while(q!=NULL)
{
cout<<q->data<<"^";
cout<<q->data2<<"----->";
q=q->next;
}
cout<<endl<<endl;
}
}
void print2()
{
if(qx==NULL)
{
cout<<"List is empty"<<endl<<endl;
}
else
{
q=qx;
while(q!=NULL)
{
cout<<q->data<<"^";
cout<<q->data2<<"----->";
q=q->next;
}
cout<<endl<<endl;
}
}
void print3()
{
if(fx==NULL)
{
cout<<"List is empty"<<endl<<endl;
}
else
{
s=fx;
while(s!=NULL)
{
cout<<s->data<<"^";
cout<<s->data2<<"----->";
s=s->next;
}
cout<<endl<<endl;
}
}
};
int main()
{
polynomial l;
l.getdata();
}
Revise this Paste