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< stdio.h> #include< conio.h> 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< nPage;i++) { printf("Enter size of page[%d]:",i+1); scanf("%d",&pg[i]); } total=total-os_m; for(i=0;i< nPage;i++) { if(total>=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 Al

implement Rail fence cipher in Java

// File Name: RailFence.java import java.util.*; class RailFenceBasic{ int depth; String Encryption(String plainText,int depth)throws Exception { int r=depth,len=plainText.length(); int c=len/depth; char mat[][]=new char[r][c]; int k=0; String cipherText=""; for(int i=0;i< c;i++) { for(int j=0;j< r;j++) { if(k!=len) mat[j][i]=plainText.charAt(k++); else mat[j][i]='X'; } } for(int i=0;i< r;i++) { for(int j=0;j< c;j++) { cipherText+=mat[i][j]; } } return cipherText; } String Decryption(String cipherText,int depth)throws Exception { int r=depth,len=cipherText.length(); int c=len/depth; char mat[][]=new char[r][c]; int k=0; String plainText=""; for(int i=0;i< r;i++) { for(int j=0;j< c;j++) { mat[i][j]=cipherText.charAt(k++); } } for(int i=0;i< c;i++) { for(int j=0;j< r;j++) { plainText+=mat[j][i]; } }

Deadlock Prevention using Banker’s Algorithm in C Programming

#include< stdio.h> #include< conio.h> 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< =pno;i++) { flag[i]=0; } printf("\n Enter total numbers of each resources:"); for(i=1;i<= rno;i++) scanf("%d",&tres[i]); printf("\n Enter Max resources for each process:"); for(i=1;i<= pno;i++) { printf("\n for process %d:",i); for(j=1;j<= rno;j++) scanf("%d",&max[i][j]); } printf("\n Enter allocated resources for each process:"); for(i=1;i<= pno;i++) { printf("\n for process %d:",i); for(j=1;j<= rno;j++) scanf("%d",&allocated[i][j]); } printf("\n avai