Skip to main content

Add two polynomial using Doubly Linked list in C Programming

#include 
#include
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->expexp)
   {
    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);
}

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
-------------------------

Comments

Popular posts from this blog

MVT (Multiprogramming Variable Task) in C Programming

#include #include void main() { int i,os_m,nPage,total,pg[25]; clrscr(); printf("\nEnter total memory size:"); scanf("%d",&total); printf("\nEnter memory for OS:"); scanf("%d",&os_m); printf("\nEnter no. of pages:"); scanf("%d",&nPage); for(i=0;i =pg[i]) { printf("\n Allocate page %d",i+1); total=total-pg[i]; } else printf("\n page %d is not allocated due to insufficient memory.",i+1); } printf("\n External Fragmentation is:%d",total); getch(); } OUTPUT Enter total memory size:1024 Enter memory for OS:256 Enter no. of pages:4 Enter size of page[1]:128 Enter size of page[2]:512 Enter size of page[3]:64 Enter size of page[4]:512 Allocate page 1 Allocate page 2 Allocate page 3 page 4 is not allocated due to insufficient memory. External Fragmentation is:64

First Come First Serve (FCFS) Page replacement algorithm in C Programming

#include #include int fsize; int frm[15]; void display(); void main() { int pg[100],nPage,i,j,pf=0,top=-1,temp,flag=0; clrscr(); printf("\n Enter frame size:"); scanf("%d",&fsize); printf("\n Enter number of pages:"); scanf("%d",&nPage); for(i=0;i OUTPUT Enter frame size:3 Enter number of pages:12 Enter page[1]:1 Enter page[2]:2 Enter page[3]:3 Enter page[4]:4 Enter page[5]:1 Enter page[6]:2 Enter page[7]:5 Enter page[8]:1 Enter page[9]:2 Enter page[10]:3 Enter page[11]:4 Enter page[12]:5 page | Frame content -------------------------------------- 1 | 1 -1 -1 2 | 1 2 -1 3 | 1 2 3 4 | 4 2 3 1 | 4 1 3 2 | 4 1 2 5 | 5 1 2 1 | 5 1 2 2 | 5 1 2 3 | 5 3 2 4 | 5 3 4 5 | 5 3 4 ---------------------------...

Deadlock Prevention using Banker’s Algorithm in C Programming

#include #include void main() { int allocated[15][15],max[15][15],need[15][15],avail[15],tres[15],work[15],flag[15]; int pno,rno,i,j,prc,count,t,total; count=0; clrscr(); printf("\n Enter number of process:"); scanf("%d",&pno); printf("\n Enter number of resources:"); scanf("%d",&rno); for(i=1;i OUTPUT Enter number of process:5 Enter number of resources:3 Enter total numbers of each resources:10 5 7 Enter Max resources for each process: for process 1:7 5 3 for process 2:3 2 2 for process 3:9 0 2 for process 4:2 2 2 for process 5:4 3 3 Enter allocated resources for each process: for process 1:0 1 0 for process 2:3 0 2 for process 3:3 0 2 for process 4:2 1 1 for process 5:0 0 2 available resources: 2 3 0 Allocated matrix Max need 0 1 0| 7 5 3| 7 4 3 3 0 2| 3 2 2| 0 2 0 3 0 2| 9 0 2| 6 0 0 2 1 1| ...