typedef struct Node
{
int coefficient;
int exponenet;
struct Node *next;
}node;
void create1(node *poly1,int exp,int coeff)
{ while(poly1->next!=NULL)
{
poly1=poly1->next;
}
poly1->exponenet=exp;
poly1->coefficient=coeff;
poly1->next=(node *)malloc(sizeof(node));
poly1=poly1->next;
poly1->next=NULL;
}
void create2(node *poly2,int exp,int coeff)
{ while(poly2->next!=NULL)
{
poly2=poly2->next;
}
poly2->exponenet=exp;
poly2->coefficient=coeff;
poly2->next=(node *)malloc(sizeof(node));
poly2=poly2->next;
poly2->next=NULL;
}
void print(node *pointer)
{
if(pointer->next==NULL)
{
return;
}
if(pointer->exponenet==0)
printf("%dx^%d ",pointer->coefficient,pointer->exponenet);
else
printf("%dx^%d+",pointer->coefficient,pointer->exponenet);
print(pointer->next);
}
void additon(node *p1,node *p2,node *p3)
{ int c1,c2,e1,e2;
if(p1==NULL&&p2==NULL)
{
p3=NULL;
return;
}
if(p1==NULL&&p2!=NULL)
{
p3=p2;
return;
}
if(p1!=NULL&&p2==NULL)
{
p3=p1;
return;
}
node *temp1,*temp2,*temp3;
temp1=p1;
temp2=p2;
temp3=p3;
while(temp1->next!=NULL&&temp2->next!=NULL)
{
c1=temp1->coefficient;
c2=temp2->coefficient;
e1=temp1->exponenet;
e2=temp2->exponenet;
if(e1>e2)
{
temp3->coefficient=temp1->coefficient;
temp3->exponenet=temp1->exponenet;
temp3->next=(node *)malloc(sizeof(node));
temp3=temp3->next;
temp3->next=NULL;
temp1=temp1->next;
}
else if(e2>e1)
{
temp3->coefficient=temp2->coefficient;
temp3->exponenet=temp1->exponenet;
temp3->next=(node *)malloc(sizeof(node));
temp3=temp3->next;
temp3->next=NULL;
temp2=temp2->next;
}
else if(c1+c2==0)
{
temp1=temp1->next;
temp2=temp2->next;
}
else if(c1+c2!=0)
{
temp3->coefficient=temp2->coefficient+temp1->coefficient;
temp3->exponenet=temp1->exponenet;
temp3->next=(node *)malloc(sizeof(node));
temp3=temp3->next;
temp3->next=NULL;
temp2=temp2->next;
temp1=temp1->next;
}
}
if(temp1->next==NULL)
{ while(temp2->next!=NULL)
{
temp3->coefficient=temp2->coefficient;
temp3->exponenet=temp2->exponenet;
temp3->next=(node *)malloc(sizeof(node));
temp3->next=NULL;
temp2=temp2->next;
}
}
else if(temp2->next==NULL)
{ while(temp1->next!=NULL)
{
temp3->coefficient=temp1->coefficient;
temp3->exponenet=temp1->exponenet;
temp3->next=(node *)malloc(sizeof(node));
temp3->next=NULL;
temp1=temp2->next;
}
}
printf("\nThe resulting polynomial is\n");
print(p3);
}
int main()
{
int m,n,exp,coeff,i;
node *p1,*p2,*s1,*s2,*s3;
s1=(node *)malloc(sizeof(node));
s1->next=NULL;
p1=s1;
s2=(node *)malloc(sizeof(node));
s2->next=NULL;
p2=s2;
printf("\nEnter the no of terms for p1 and p2\n");
scanf("%d%d",&m,&n);
printf("\nEnter coefficients and exponetial for p1\n");
for(i=0;i<m;i++)
{
scanf("%d%d",&coeff,&exp);
create1(p1,exp,coeff);
}
printf("\nEnter coefficients and exponential for p2\n");
for(i=0;i<n;i++)
{
scanf("%d%d",&coeff,&exp);
create2(p2,exp,coeff);
}
printf("\npolynomial p1 is :");
print(s1);
printf("\npolynomial p2 is :");
print(s2);
s3=(node *)malloc(sizeof(node));
s3->next=NULL;
additon(s1,s2,s3);
return 0;
}
{
int coefficient;
int exponenet;
struct Node *next;
}node;
void create1(node *poly1,int exp,int coeff)
{ while(poly1->next!=NULL)
{
poly1=poly1->next;
}
poly1->exponenet=exp;
poly1->coefficient=coeff;
poly1->next=(node *)malloc(sizeof(node));
poly1=poly1->next;
poly1->next=NULL;
}
void create2(node *poly2,int exp,int coeff)
{ while(poly2->next!=NULL)
{
poly2=poly2->next;
}
poly2->exponenet=exp;
poly2->coefficient=coeff;
poly2->next=(node *)malloc(sizeof(node));
poly2=poly2->next;
poly2->next=NULL;
}
void print(node *pointer)
{
if(pointer->next==NULL)
{
return;
}
if(pointer->exponenet==0)
printf("%dx^%d ",pointer->coefficient,pointer->exponenet);
else
printf("%dx^%d+",pointer->coefficient,pointer->exponenet);
print(pointer->next);
}
void additon(node *p1,node *p2,node *p3)
{ int c1,c2,e1,e2;
if(p1==NULL&&p2==NULL)
{
p3=NULL;
return;
}
if(p1==NULL&&p2!=NULL)
{
p3=p2;
return;
}
if(p1!=NULL&&p2==NULL)
{
p3=p1;
return;
}
node *temp1,*temp2,*temp3;
temp1=p1;
temp2=p2;
temp3=p3;
while(temp1->next!=NULL&&temp2->next!=NULL)
{
c1=temp1->coefficient;
c2=temp2->coefficient;
e1=temp1->exponenet;
e2=temp2->exponenet;
if(e1>e2)
{
temp3->coefficient=temp1->coefficient;
temp3->exponenet=temp1->exponenet;
temp3->next=(node *)malloc(sizeof(node));
temp3=temp3->next;
temp3->next=NULL;
temp1=temp1->next;
}
else if(e2>e1)
{
temp3->coefficient=temp2->coefficient;
temp3->exponenet=temp1->exponenet;
temp3->next=(node *)malloc(sizeof(node));
temp3=temp3->next;
temp3->next=NULL;
temp2=temp2->next;
}
else if(c1+c2==0)
{
temp1=temp1->next;
temp2=temp2->next;
}
else if(c1+c2!=0)
{
temp3->coefficient=temp2->coefficient+temp1->coefficient;
temp3->exponenet=temp1->exponenet;
temp3->next=(node *)malloc(sizeof(node));
temp3=temp3->next;
temp3->next=NULL;
temp2=temp2->next;
temp1=temp1->next;
}
}
if(temp1->next==NULL)
{ while(temp2->next!=NULL)
{
temp3->coefficient=temp2->coefficient;
temp3->exponenet=temp2->exponenet;
temp3->next=(node *)malloc(sizeof(node));
temp3->next=NULL;
temp2=temp2->next;
}
}
else if(temp2->next==NULL)
{ while(temp1->next!=NULL)
{
temp3->coefficient=temp1->coefficient;
temp3->exponenet=temp1->exponenet;
temp3->next=(node *)malloc(sizeof(node));
temp3->next=NULL;
temp1=temp2->next;
}
}
printf("\nThe resulting polynomial is\n");
print(p3);
}
int main()
{
int m,n,exp,coeff,i;
node *p1,*p2,*s1,*s2,*s3;
s1=(node *)malloc(sizeof(node));
s1->next=NULL;
p1=s1;
s2=(node *)malloc(sizeof(node));
s2->next=NULL;
p2=s2;
printf("\nEnter the no of terms for p1 and p2\n");
scanf("%d%d",&m,&n);
printf("\nEnter coefficients and exponetial for p1\n");
for(i=0;i<m;i++)
{
scanf("%d%d",&coeff,&exp);
create1(p1,exp,coeff);
}
printf("\nEnter coefficients and exponential for p2\n");
for(i=0;i<n;i++)
{
scanf("%d%d",&coeff,&exp);
create2(p2,exp,coeff);
}
printf("\npolynomial p1 is :");
print(s1);
printf("\npolynomial p2 is :");
print(s2);
s3=(node *)malloc(sizeof(node));
s3->next=NULL;
additon(s1,s2,s3);
return 0;
}
Comments
Post a Comment