#include <stdio.h>
#include<conio.h>
typedef struct pnode
{
float coef;
int exp;
struct pnode *next;
}p;
p *getnode();
void main()
{
p *p1,*p2,*p3;
p *getpoly(),*add(p*,p*);
void display(p*);
clrscr();
printf("\n enter first polynomial.");
printf("\n-------------------------");
p1=getpoly();
printf("\n-------------------------");
printf("\n enter second polynomial");
p2=getpoly();
printf("\n-------------------------");
printf("\nthe first polynomial is: ");
display(p1);
printf("\n-------------------------");
printf("\nthe second polynomial is :");
display(p2);
printf("\n-------------------------");
p3=add(p1,p2);
printf("\naddition of two polynomial is :\n\n");
display(p3);
printf("\n-------------------------");
}
p *getpoly()
{
p *temp,*New,*last;
int flag,exp;
char ans;
float coef;
temp=NULL;
flag=1;
printf("\nenter the polynomial in descending order of exponent.");
do
{
printf("\nenter the coefficient & exponent of a term:");
scanf("%f%d",&coef,&exp);
New=getnode();
if(New==NULL)
printf("\nmemory cannot be allocated");
New->coef=coef;
New->exp=exp;
if(flag==1)
{
temp=New;
last=temp;
flag=0;
}
else
{
last->next=New;
last=New;
}
printf("\n do you want to more terms?(y/n):");
scanf("%s",&ans);
}
while(ans=='y');
return(temp);
}
p *getnode()
{
p *temp;
temp=(p*) malloc (sizeof(p));
temp->next=NULL;
return(temp);
}
void display(p*head)
{
p*temp;
temp=head;
if(temp==NULL)
printf("\npolynomial empty");
while(temp->next!=NULL)
{
printf("%0.1fX^%d + ",temp->coef,temp->exp);
temp=temp->next;
}
printf("%0.1fx^%d",temp->coef,temp->exp);
getch();
}
p*add(p*first,p*second)
{
p *p1,*p2,*temp,*dummy;
char ch;
float coef;
p *append(int,float,p*);
p1=first;
p2=second;
temp=(p*)malloc(sizeof(p));
if(temp==NULL)
printf("\nmemory cannot be allocated");
dummy=temp;
while(p1!=NULL&&p2!=NULL)
{
if(p1->exp==p2->exp)
{
coef=p1->coef+p2->coef;
temp=append(p1->exp,coef,temp);
p1=p1->next;
p2=p2->next;
}
else
{
if(p1->exp<p2->exp)
{
coef=p2->coef;
temp=append(p2->exp,coef,temp);
p2=p2->next;
}
else
{
if(p1->exp>p2->exp)
{
coef=p1->coef;
temp=append(p1->exp,coef,temp);
p1=p1->next;
}
}
}
}
while(p1!=NULL)
{
temp=append(p1->exp,p1->coef,temp);
p1=p1->next;
}
while(p2!=NULL)
{
temp=append(p2->exp,p2->coef,temp);
p2=p2->next;
}
temp->next=NULL;
temp=dummy->next;
free(dummy);
return(temp);
}
p*append(int Exp,float Coef,p*temp)
{
p*New,*dum;
New=(p*)malloc(sizeof(p));
if(New==NULL)
printf("\ncannot be allocated");
New->exp=Exp;
New->coef=Coef;
New->next=NULL;
dum=temp;
dum->next=New;
dum=New;
return(dum);
}
</p2-></conio.h></stdio.h>
OUTPUT
enter first polynomial.
-------------------------
enter the polynomial in descending order of exponent.
enter the coefficient & exponent of a term:12 4
do you want to more terms?(y/n):y
enter the coefficient & exponent of a term:10 2
do you want to more terms?(y/n):y
enter the coefficient & exponent of a term:5 1
do you want to more terms?(y/n):n
-------------------------
enter second polynomial
enter the polynomial in descending order of exponent.
enter the coefficient & exponent of a term: 15 3
do you want to more terms?(y/n):y
enter the coefficient & exponent of a term:10 2
do you want to more terms?(y/n):15 1
-------------------------
the first polynomial is: 12.0X^4 + 10.0X^2 + 5.0x^1
-------------------------
the second polynomial is :15.0X^3 + 10.0x^2
-------------------------
addition of two polynomial is :
12.0X^4 + 15.0X^3 + 20.0X^2 + 5.0x^1
-------------------------
#include<conio.h>
typedef struct pnode
{
float coef;
int exp;
struct pnode *next;
}p;
p *getnode();
void main()
{
p *p1,*p2,*p3;
p *getpoly(),*add(p*,p*);
void display(p*);
clrscr();
printf("\n enter first polynomial.");
printf("\n-------------------------");
p1=getpoly();
printf("\n-------------------------");
printf("\n enter second polynomial");
p2=getpoly();
printf("\n-------------------------");
printf("\nthe first polynomial is: ");
display(p1);
printf("\n-------------------------");
printf("\nthe second polynomial is :");
display(p2);
printf("\n-------------------------");
p3=add(p1,p2);
printf("\naddition of two polynomial is :\n\n");
display(p3);
printf("\n-------------------------");
}
p *getpoly()
{
p *temp,*New,*last;
int flag,exp;
char ans;
float coef;
temp=NULL;
flag=1;
printf("\nenter the polynomial in descending order of exponent.");
do
{
printf("\nenter the coefficient & exponent of a term:");
scanf("%f%d",&coef,&exp);
New=getnode();
if(New==NULL)
printf("\nmemory cannot be allocated");
New->coef=coef;
New->exp=exp;
if(flag==1)
{
temp=New;
last=temp;
flag=0;
}
else
{
last->next=New;
last=New;
}
printf("\n do you want to more terms?(y/n):");
scanf("%s",&ans);
}
while(ans=='y');
return(temp);
}
p *getnode()
{
p *temp;
temp=(p*) malloc (sizeof(p));
temp->next=NULL;
return(temp);
}
void display(p*head)
{
p*temp;
temp=head;
if(temp==NULL)
printf("\npolynomial empty");
while(temp->next!=NULL)
{
printf("%0.1fX^%d + ",temp->coef,temp->exp);
temp=temp->next;
}
printf("%0.1fx^%d",temp->coef,temp->exp);
getch();
}
p*add(p*first,p*second)
{
p *p1,*p2,*temp,*dummy;
char ch;
float coef;
p *append(int,float,p*);
p1=first;
p2=second;
temp=(p*)malloc(sizeof(p));
if(temp==NULL)
printf("\nmemory cannot be allocated");
dummy=temp;
while(p1!=NULL&&p2!=NULL)
{
if(p1->exp==p2->exp)
{
coef=p1->coef+p2->coef;
temp=append(p1->exp,coef,temp);
p1=p1->next;
p2=p2->next;
}
else
{
if(p1->exp<p2->exp)
{
coef=p2->coef;
temp=append(p2->exp,coef,temp);
p2=p2->next;
}
else
{
if(p1->exp>p2->exp)
{
coef=p1->coef;
temp=append(p1->exp,coef,temp);
p1=p1->next;
}
}
}
}
while(p1!=NULL)
{
temp=append(p1->exp,p1->coef,temp);
p1=p1->next;
}
while(p2!=NULL)
{
temp=append(p2->exp,p2->coef,temp);
p2=p2->next;
}
temp->next=NULL;
temp=dummy->next;
free(dummy);
return(temp);
}
p*append(int Exp,float Coef,p*temp)
{
p*New,*dum;
New=(p*)malloc(sizeof(p));
if(New==NULL)
printf("\ncannot be allocated");
New->exp=Exp;
New->coef=Coef;
New->next=NULL;
dum=temp;
dum->next=New;
dum=New;
return(dum);
}
</p2-></conio.h></stdio.h>
OUTPUT
enter first polynomial.
-------------------------
enter the polynomial in descending order of exponent.
enter the coefficient & exponent of a term:12 4
do you want to more terms?(y/n):y
enter the coefficient & exponent of a term:10 2
do you want to more terms?(y/n):y
enter the coefficient & exponent of a term:5 1
do you want to more terms?(y/n):n
-------------------------
enter second polynomial
enter the polynomial in descending order of exponent.
enter the coefficient & exponent of a term: 15 3
do you want to more terms?(y/n):y
enter the coefficient & exponent of a term:10 2
do you want to more terms?(y/n):15 1
-------------------------
the first polynomial is: 12.0X^4 + 10.0X^2 + 5.0x^1
-------------------------
the second polynomial is :15.0X^3 + 10.0x^2
-------------------------
addition of two polynomial is :
12.0X^4 + 15.0X^3 + 20.0X^2 + 5.0x^1
-------------------------