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]

#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