9. Data Structure Program | Read Now

Data Structure VTU lab program -9

  • Design, Develop and Implement a Program in C for the following operations on Singly Circular Linked List (SCLL) with header nodes
    1. Represent and Evaluate a Polynomial P(x,y,z) = 6x2y2z-4yz5+3x3yz+2xy5z-2xyz3
    2. Find the sum of two polynomials POLY1(x,y,z) and POLY2(x,y,z) and store the result in POLYSUM(x,y,z)
  • Support the program with appropriate functions for each of the above operations

Program -9 code [scll.c]

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<math.h>
typedef struct node
{
int expo,coef;
struct node *next;
}node;
/*FUNCTION PROTOTYPE*/
node * insert(node *,int,int);
node * create();
node * add(node *p1,node *p2);
int eval(node *p1);
void display(node *head);
node *insert(node*head,int expo1,int coef1)
{
node *p,*q;
p=(node *)malloc(sizeof(node));
p->expo=expo1;
p->coef=coef1;
p->next=NULL;
if(head==NULL)
{
head=p;
head->next=head;
return(head);
}
if(expo1>head->expo)
{
p->next=head->next;
head->next=p;
head=p;
return(head);
}
if(expo1==head->expo)
{
head->coef=head->coef+coef1;
return(head);
}
q=head;
while(q->next!=head&&expo1>=q->next->expo)
q=q->next;
if(p->expo==q->expo)
q->coef=q->coef+coef1;
else
{
p->next=q->next;
q->next=p;
}
return(head);
}
node *create()
{
int n,i,expo1,coef1;
node *head=NULL;
printf("\n\nEnter no of terms of polynomial==>");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\n\nEnter coef & expo==>");
scanf("%d%d",&coef1,&expo1);
head=insert(head,expo1,coef1);
}
return(head);
}
node *add(node *p1,node *p2)
{
node *p;
node *head=NULL;
printf("\n\n\nAddition of polynomial==>");
p=p1->next;
do
{
head=insert(head,p->expo,p->coef);
p=p->next;
}while(p!=p1->next);
p=p2->next;
do
{
head=insert(head,p->expo,p->coef);
p=p->next;
}while(p!=p2->next);
return(head);
}
int eval(node *head)
{
node *p;
int x,ans=0;
printf("\n\nEnter the value of x=");
scanf("%d",&x);
p=head->next;
do
{
ans=ans+p->coef*pow(x,p->expo);
p=p->next;
}while(p!=head->next);
return(ans);
}
void display(node *head)
{
node *p,*q;
int n=0;
q=head->next;
p=head->next;
do
{
n++;
q=q->next;
}while(q!=head->next);
printf("\n\n\tThe polynomial is==>");
do
{
if(n-1)
{
printf("%dx^(%d) + ",p->coef,p->expo);
p=p->next;
}
else
{
printf(" %dx^(%d)",p->coef,p->expo);
p=p->next;
}
n--;
} while(p!=head->next);
}
void main()
{
int a,x,ch;
node *p1,*p2,*p3;
p1=p2=p3=NULL;
while(1)
{
printf("\n\t----------------<< MENU >>---------------");
printf("\n\tPolynomial Operations :");
printf(" 1.Add");
printf("\n\t\t\t\t2.Evaluate");
printf("\n\t\t\t\t3.Exit");
printf("\n\t------------------------------------------- ");
printf("\n\n\n\tEnter your choice==>");
scanf("%d",&ch);
switch(ch)
{
case 1 :
p1=create();
display(p1);
p2=create();
display(p2);
p3=add(p1,p2);
display(p3);
break;
case 2 :
p1=create();
display(p1);
a=eval(p1);
printf("\n\nValue of polynomial=%d",a);
break;
case 3 :
exit(0);
break;
default :
printf("\n\n\t invalid choice");
break;
}
}
}
#include<stdio.h> #include<math.h> #include<stdlib.h> #include<math.h> typedef struct node { int expo,coef; struct node *next; }node; /*FUNCTION PROTOTYPE*/ node * insert(node *,int,int); node * create(); node * add(node *p1,node *p2); int eval(node *p1); void display(node *head); node *insert(node*head,int expo1,int coef1) { node *p,*q; p=(node *)malloc(sizeof(node)); p->expo=expo1; p->coef=coef1; p->next=NULL; if(head==NULL) { head=p; head->next=head; return(head); } if(expo1>head->expo) { p->next=head->next; head->next=p; head=p; return(head); } if(expo1==head->expo) { head->coef=head->coef+coef1; return(head); } q=head; while(q->next!=head&&expo1>=q->next->expo) q=q->next; if(p->expo==q->expo) q->coef=q->coef+coef1; else { p->next=q->next; q->next=p; } return(head); } node *create() { int n,i,expo1,coef1; node *head=NULL; printf("\n\nEnter no of terms of polynomial==>"); scanf("%d",&n); for(i=0;i<n;i++) { printf("\n\nEnter coef & expo==>"); scanf("%d%d",&coef1,&expo1); head=insert(head,expo1,coef1); } return(head); } node *add(node *p1,node *p2) { node *p; node *head=NULL; printf("\n\n\nAddition of polynomial==>"); p=p1->next; do { head=insert(head,p->expo,p->coef); p=p->next; }while(p!=p1->next); p=p2->next; do { head=insert(head,p->expo,p->coef); p=p->next; }while(p!=p2->next); return(head); } int eval(node *head) { node *p; int x,ans=0; printf("\n\nEnter the value of x="); scanf("%d",&x); p=head->next; do { ans=ans+p->coef*pow(x,p->expo); p=p->next; }while(p!=head->next); return(ans); } void display(node *head) { node *p,*q; int n=0; q=head->next; p=head->next; do { n++; q=q->next; }while(q!=head->next); printf("\n\n\tThe polynomial is==>"); do { if(n-1) { printf("%dx^(%d) + ",p->coef,p->expo); p=p->next; } else { printf(" %dx^(%d)",p->coef,p->expo); p=p->next; } n--; } while(p!=head->next); } void main() { int a,x,ch; node *p1,*p2,*p3; p1=p2=p3=NULL; while(1) { printf("\n\t----------------<< MENU >>---------------"); printf("\n\tPolynomial Operations :"); printf(" 1.Add"); printf("\n\t\t\t\t2.Evaluate"); printf("\n\t\t\t\t3.Exit"); printf("\n\t------------------------------------------- "); printf("\n\n\n\tEnter your choice==>"); scanf("%d",&ch); switch(ch) { case 1 : p1=create(); display(p1); p2=create(); display(p2); p3=add(p1,p2); display(p3); break; case 2 : p1=create(); display(p1); a=eval(p1); printf("\n\nValue of polynomial=%d",a); break; case 3 : exit(0); break; default : printf("\n\n\t invalid choice"); break; } } }
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<math.h>
typedef struct node
{
int expo,coef;
struct node *next;
}node;
/*FUNCTION PROTOTYPE*/
node * insert(node *,int,int);
node * create();
node * add(node *p1,node *p2);
int eval(node *p1);
void display(node *head);
node *insert(node*head,int expo1,int coef1)
{
 node *p,*q;
 p=(node *)malloc(sizeof(node));
 p->expo=expo1;
 p->coef=coef1;
 p->next=NULL;
if(head==NULL)
 {
 head=p;
 head->next=head;
 return(head);
 }

if(expo1>head->expo)
 {
 p->next=head->next;
 head->next=p;
 head=p;
 return(head);
 }
if(expo1==head->expo)
 {
 head->coef=head->coef+coef1; 
return(head);
 }
 q=head;
while(q->next!=head&&expo1>=q->next->expo)
 q=q->next;
if(p->expo==q->expo)
 q->coef=q->coef+coef1;
else
 {
 p->next=q->next;
 q->next=p;
 }
return(head);
}
node *create()
{
int n,i,expo1,coef1;
 node *head=NULL;
 printf("\n\nEnter no of terms of polynomial==>");
 scanf("%d",&n);
for(i=0;i<n;i++)
 {
 printf("\n\nEnter coef & expo==>");
 scanf("%d%d",&coef1,&expo1);
 head=insert(head,expo1,coef1);
 }
return(head);
}
node *add(node *p1,node *p2)
{
 node *p;
 node *head=NULL;
 printf("\n\n\nAddition of polynomial==>");
 p=p1->next;
do
 {
 head=insert(head,p->expo,p->coef);
 p=p->next;
 }while(p!=p1->next);
 p=p2->next;
do
 { 
head=insert(head,p->expo,p->coef);
 p=p->next;
 }while(p!=p2->next);
return(head);
}
int eval(node *head)
{
 node *p;
int x,ans=0;
 printf("\n\nEnter the value of x=");
 scanf("%d",&x);
 p=head->next;
do
 {
 ans=ans+p->coef*pow(x,p->expo);
 p=p->next;
 }while(p!=head->next);
return(ans);
}
void display(node *head)
{
 node *p,*q;
int n=0;
 q=head->next;
 p=head->next;
do
 {
 n++;
 q=q->next;
 }while(q!=head->next);
 printf("\n\n\tThe polynomial is==>");

do
 {
 if(n-1)
 {
 printf("%dx^(%d) + ",p->coef,p->expo);
 p=p->next;
 }
 else
 { 
printf(" %dx^(%d)",p->coef,p->expo);
 p=p->next;
 }
 n--;
 } while(p!=head->next);
}
void main()
{
int a,x,ch;
 node *p1,*p2,*p3;
 p1=p2=p3=NULL;
while(1)
 {
 printf("\n\t----------------<< MENU >>---------------");
 printf("\n\tPolynomial Operations :");
 printf(" 1.Add");
 printf("\n\t\t\t\t2.Evaluate");
 printf("\n\t\t\t\t3.Exit");
 printf("\n\t------------------------------------------- ");
 printf("\n\n\n\tEnter your choice==>");
 scanf("%d",&ch);
 switch(ch)
 {
 case 1 :
 p1=create();
 display(p1);
 p2=create();
 display(p2);
 p3=add(p1,p2);
 display(p3);
 break;
 case 2 :
 p1=create();
 display(p1);
 a=eval(p1);
 printf("\n\nValue of polynomial=%d",a);
 break;
 case 3 :
 exit(0);
 break;
 default :
 printf("\n\n\t invalid choice");
 break;
 }
}
} 

Data Structure – How to Run this Program

  • Step-1: Copy the above code
  • Step-2: Paste it in any C compiler [Codeblocks/Dev C++/ VsCode etc]
  • Step-3: Save the file name with .C extension
  • Step-4: Compile the program
  • Step-5: Run the program
  • Step-6: Program Execution Successful

Leave a Reply

Your email address will not be published. Required fields are marked *

WhatsApp Icon Join For Job Alerts