0% found this document useful (0 votes)
220 views52 pages

NAME:Pindariya Bhavesh P Subject: Ds Course: Mca Roll No: B-29 1. Array Operations: Traversing, Insertion, Deletion in Array

The document discusses three topics related to arrays and matrices in C programming: 1) Array operations like traversing, inserting, and deleting elements in an array. 2) Addition and multiplication of two polynomials represented as linked lists. 3) Addition and transpose of sparse matrices represented using a sparse matrix format. Pseudocode and sample code is provided for each operation on arrays and matrices.

Uploaded by

vinodit1988
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
220 views52 pages

NAME:Pindariya Bhavesh P Subject: Ds Course: Mca Roll No: B-29 1. Array Operations: Traversing, Insertion, Deletion in Array

The document discusses three topics related to arrays and matrices in C programming: 1) Array operations like traversing, inserting, and deleting elements in an array. 2) Addition and multiplication of two polynomials represented as linked lists. 3) Addition and transpose of sparse matrices represented using a sparse matrix format. Pseudocode and sample code is provided for each operation on arrays and matrices.

Uploaded by

vinodit1988
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 52

NAME :Pindariya bhavesh p SUBJECT : DS

COURSE: MCA ROLL NO: B-29

1. Array operations: Traversing, Insertion, Deletion in array

#include<stdio.h>
#include<conio.h>
void main()
{
int a[5],i,n,j,k,c,ch,b,m;
clrscr();
printf("Enter the array;-");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("1 : Insert \n");
printf("2 : Delete \n");
printf("3 : Traiversing \n");
printf("Enter the coice :-");
scanf("%d",&c);
switch(c)
{
case 1:
printf("\nEnetr the position:-");
scanf("%d",&j);
printf("\nEnter the value:-");
scanf("%d",&k);
for(i=n;i>=j;i--)
{
a[i+1]=a[i];
}
a[j]=k;
for(i=0;i<n+1;i++)
{
printf("%d\n",a[i]);
}
break;
case 2:
printf("Enter the position to delete :-");
scanf("%d",&b);
for(i=b;i<n;i++)
a[i]=a[i+1];
for(i=0;i<n-1;i++)
{
printf("%d\n",a[i]);
}
break;
case 3:
for(i=0;i<n;i++)
{
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

printf("%d\n",a[i]);
}
break;
}
getch();
}
/*OUTPUT
Print Array:-1,2,3,4,5,8
1) : Insert
2) : Delete
3) : Traiversing
Enter the coice :-1
Enetr the position:-5
Enter the value:-10
Print Array:-1,2,3,4,5,10,8
Enter the coice :-2
Enetr the position To delete:-2
Print Array:-1,2,4,5,10,8

2. Addition and Multiplication of Two Polynomials.

CODE:
/*POLYNOMIAL OF ADDITION USING LINKED LIST*/

#include<stdio.h>
struct node
{
int coff;
int pow;
struct list *next;
};
typedef struct node POLY;
void Insert(POLY **first,int co,int power)
{
POLY *newnode,*temp;
newnode=(POLY *)malloc(sizeof(POLY));
newnode->coff=co;
newnode->pow=power;
newnode->next=NULL;
if(*first==NULL)
*first=newnode;
else
{
temp=*first;
while(temp->next!=NULL)
temp=temp->next;
temp->next=newnode;
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

}
}
void Display(POLY *temp)
{
if(temp==NULL)
{
printf("\n\n\tLIST IS EMPTY.");
return;
}
printf("\nPOLYNOMIAL IS:\n\n");
while(temp!=NULL)
{
printf("%dX^%d",temp->coff,temp->pow);
if(temp->next!=NULL)
printf(" + ");
temp=temp->next;
}
return;
}
void POLY_ADD(POLY *first,POLY *second,POLY **dest)
{
POLY *ptr1,*ptr2;
ptr1=first;
ptr2=second;
while((ptr1!=NULL)&&(ptr2!=NULL))
{
if((ptr1->pow)>(ptr2->pow))
{
Insert(dest,ptr1->coff,ptr1->pow);
ptr1=ptr1->next;
}
else if((ptr1->pow)<(ptr2->pow))
{
Insert(dest,ptr2->coff,ptr2->pow);
ptr2=ptr2->next;
}
else
{
Insert(dest,ptr1->coff+ptr2->coff,ptr1->pow);
ptr2=ptr2->next;
ptr1=ptr1->next;
}
}
while(ptr1!=NULL)
{
Insert(dest,ptr1->coff,ptr1->pow);
ptr1=ptr1->next;
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

}
while(ptr2!=NULL)
{
Insert(dest,ptr2->coff,ptr2->pow);
ptr2=ptr2->next;
}
printf("\n\n\tPOLYNOMIAL ADDED SUCCESSFULLY");
return;
}
void main()
{
POLY *first,*second,*dest;
int ch,ele,pow;
first=NULL;
second=NULL;
dest=NULL;
do
{
clrscr();
printf("\t\t\t\tMERGING MENU\n\t\t\t\t************\n");
printf("\n\t\t\t1.INSERT INTO FIRST LIST\n\t\t\t2.INSERT INTO
SECOND LIST");
printf("\n\t\t\t3.DISPLAY FIRST LIST\n\t\t\t4.DISPLAY SECOND
LIST");
printf("\n\t\t\t5.MERGE\n\t\t\t6.DISPLAY MERGED
LIST\n\t\t\t7.EXIT");
printf("\n\n\t\t\tENTER YOUR CHOICE:");
scanf("%d",&ch);
switch(ch)
{
case 1:
printf("\nEnter The cofficient:");
scanf("%d",&ele);
printf("\nEnter The Power(DECREASING
ORDER):");
scanf("%d",&pow);
Insert(&first,ele,pow);
break;
case 2:
printf("\nEnter The Element:");
scanf("%d",&ele);
printf("\nEnter The Power(DECREASING
ORDER):");
scanf("%d",&pow);
Insert(&second,ele,pow);
break;
case 3:
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

Display(first);
break;
case 4:
Display(second);
break;
case 6:
Display(dest);
break;
case 5:
POLY_ADD(first,second,&dest);
break;
case 7:
exit(1);
break;
default:
printf("\n\n\tWRONG CHOICE.");
}
getch();
}while(ch!=7);
}

OUTPUT:

ADDED POLYNOMIAL
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

3. Addition and Transpose of Sparse Matrices.

#include<stdio.h>
#include<conio.h>
#define SIZE 10
typedef struct sp
{
int row,col,val;
}SPR;
void readmat(int a[][SIZE],int m, int n);
int mak_sparse(int a[][SIZE], int m,int n, SPR s1[]);
void display_spr(SPR s[],int n);
void main()
{
int a[SIZE][SIZE],b[SIZE][SIZE],i,j,k,m,n,i1,i2,n1,n2,i3,n3;
SPR s1[SIZE],s2[SIZE],s3[SIZE];
i1=i2=i3=1;
clrscr();
printf("\n\tEnter size for matrix A(col n row):- ");
scanf("%d%d",&n,&m);
printf("\n\tEnter %d elements for matrix A:- ",m*n);
readmat(a,m,n);
n1=mak_sparse(a,m,n,s1);
display_spr(s1,n1);
getch();
printf("\n\tEnter size for matrix B(col n row):- ");
scanf("%d%d",&n,&m);
printf("\n\tEnter %d elements for matrix B:- ",m*n);
readmat(b,m,n);
n2=mak_sparse(b,m,n,s2);
display_spr(s2,n2);
getch();
s3[0].row = s1[0].row > s2[0].row ? s1[0].row : s2[0].row;
s3[0].col = s1[0].col > s2[0].col ? s1[0].col : s2[0].col;
while(i1 < n1 && i2 < n2)
{
if(s1[i1].row == s2[i2].row)
{
if(s1[i1].col == s2[i2].col)
{
s3[i3].row=s1[i1].row;
s3[i3].col=s1[i1].col;
s3[i3].val=s1[i1].val+s2[i2].val;
i3++;
i2++;
i1++;
}
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

else if(s1[i1].col < s2[i2].col)


{
s3[i3].row=s1[i1].row;
s3[i3].col=s1[i1].col;
s3[i3].val=s1[i1].val;
i1++;
i3++;
}
else
{
s3[i3].row=s2[i2].row;
s3[i3].col=s2[i2].col;
s3[i3].val=s2[i2].val;
i3++;
i2++;
}
}
else if(s1[i1].row < s2[i2].row)
{
s3[i3].row=s1[i1].row;
s3[i3].col=s1[i1].col;
s3[i3].val=s1[i1].val;
i3++;
i1++;
}
else
{
s3[i3].row=s2[i2].row;
s3[i3].col=s2[i2].col;
s3[i3].val=s2[i2].val;
i2++;
i3++;
}
}
while(i2<n2)
{
s3[i3].row=s2[i2].row;
s3[i3].col=s2[i2].col;
s3[i3].val=s2[i2].val;
i2++;
i3++;
}
while(i1<n1)
{
s3[i3].row=s1[i1].row;
s3[i3].col=s1[i1].col;
s3[i3].val=s1[i1].val;
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

i1++;
i3++;
}
n3=i3;
s3[0].val=n3-1;
printf("\n\tAdded sparse matrix is:- \n");
display_spr(s3,n3);
getch();
}
void readmat(int a[][SIZE],int m, int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
}
}
}
int mak_sparse(int a[][SIZE], int m,int n, SPR s1[])
{
int i,j,k=1;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if (a[i][j] != 0)
{
s1[k].row=i;
s1[k].col=j;
s1[k].val=a[i][j];
k++;
}
}
}
s1[0].row=m;
s1[0].col=n;
s1[0].val=k-1;
return(k);
}
void display_spr(SPR s[],int n)
{
int i;
printf("\n\tRow\tCol\tVal\n");
for(i=0;i<n;i++)
printf("\t%d\t%d\t%d\n",s[i].row,s[i].col,s[i].val);
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

4. Singly Linked List: Create, Display, Insertion, Deletion, Search, Reverse

CODE:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct student
{
int no;
char name[20];
struct student *next;
}stud;
stud *head,*tail,*new1;
void add();
void disp();
void search();
void del(int);
void rev();
int count=0;
void main()
{
char ch;
int delet;
clrscr();
while(1)
{
clrscr();
printf("\n\t\t--------------------------------------------");
printf("\n\t\t\t1. Create List..");
printf("\n\t\t\t2. Add Node to List");
printf("\n\t\t\t3. Display List");
printf("\n\t\t\t4. Search Node");
printf("\n\t\t\t5. Delete Node");
printf("\n\t\t\t6. Reverse of List..");
printf("\n\t\t\t7. Exit...");
printf("\n\t\t--------------------------------------------");
printf("\n\n\tEnter Your Choice...");
ch=getchar();
fflush(stdin);
switch(ch)
{
case '1':
head=tail=new1=NULL;
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

break;
case '2':
add();
break;
case '3':
disp();
break;
case '4':
search();
break;
case '5':
printf("\nEnter Node no:- ");
scanf("%d",&delet);
del(delet);
break;
case '6':
rev();
break;
case '7':
exit(0);
//break;
default:
printf("\nInvalid Choice...");
break;
}
}
}
void add()
{
char ch;
int n1;
//clrscr();
while(1)
{
new1=(stud *)malloc(sizeof(stud));
printf("\nEnter No:- ");
scanf("%d",&new1->no);
printf("\nEnter name:- ");
fflush(stdin);
gets(new1->name);
count++;
new1->next=NULL;
if(head==NULL)
head=new1;
else
tail->next=new1;
tail=new1;
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

printf("\n\tDo you want to Continue[Y/N]...");


ch=getchar();
fflush(stdin);
if(ch=='n' || ch=='N')
return 0;
}

void disp()
{
stud *temp;
temp=head;
if(head==NULL)
printf("\nSorry! List in Empty...");
else
while(temp!=NULL)
{
printf("\nNo:- %d",temp->no);
printf("\nName:- %s",temp->name);
temp=temp->next;
}
printf("\n\nTotal No of Nodes=%d",count);
getch();
}
void search()
{
stud *temp;
int n,f=0;
temp=head;
printf("\nEnter Search No:- ");
scanf("%d",&n);
if(temp==NULL)
printf("\nSorry! List is Empty...");
else
while(temp!=NULL)
{
if(temp->no==n)
{
printf("\nNo:- %d",temp->no);
printf("\nName:- %s",temp->name);
f++;
}
temp=temp->next;
}
if(f==1)
printf("\n[%d] Found [%d] times...",n,f);
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

else
printf("\nSorry! Not Found....");
getch();
}
void del(int delet)
{
stud *temp;
int n;
temp=head;
if(temp==NULL)
{
printf("\nSorry! List is Empty....");
sleep(3);
exit(0);;
}
else
{
while(temp->next!=NULL)
{
count++;
if(count==delet)
{
temp=temp->next;
free(temp);
}
}
}
}
void rev()
{
stud *p1,*p2,*p3,*temp;
p1=head;
p2=p1->next;
p3=p2->next;
head->next=NULL;
p2->next=p1;
while(p3!=NULL)
{
p1=p2;
p2=p3;
p3=p3->next;
p2->next=p1;
}
head=p2;
temp=head;
while(temp!=NULL)
{
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

printf("\nRoll-> %d Name:-%s",temp->no,temp->name);
temp=temp->next;
}
getch();
}

5. Singly Circular Linked List: Create, Display, Insertion, Deletion, Search.

CODE:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct student
{
int no;
char name[20];
struct student *next;
}stud;
stud *head,*tail,*new1;
void add();
void add_beg();
void add_after();
void disp();
void search();
void del(int);
void del(int);
int count=0;
void main()
{
char ch;
int delet;
int pos;
clrscr();
while(1)
{
clrscr();
printf("\n\t\t--------------------------------------------");
printf("\n\t\t\t1. Create List..");
printf("\n\t\t\t2. Add Node to List");
printf("\n\t\t\t3. Display List");
printf("\n\t\t\t4. Search Node");
printf("\n\t\t\t5. Delete Node");
printf("\n\t\t\t6. Add at begining..");
printf("\n\t\t\t7. Add After position...");
printf("\n\t\t\t8. Delete particular node...");
printf("\n\t\t\t0. Exit...");
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

printf("\n\t\t--------------------------------------------");
printf("\n\n\tEnter Your Choice...");
ch=getchar();
fflush(stdin);
switch(ch)
{
case '1':
head=tail=new1=NULL;
break;
case '2':
add();
break;
case '3':
disp();
break;
case '4':
search();
break;
case '5':
printf("\nEnter Node no:- ");
scanf("%d",&delet);
del(delet);
break;
case '6':
add_beg();
break;
case '7':
printf("\nEnter the position after to insert:- ");
scanf("%d",&pos);
add_after(pos);
break;
case '8':
printf("\nEnter Node no to delete:- ");
scanf("%d",&pos);
del(pos);
break;
case '0':
exit(0);
//break;
default:
printf("\nInvalid Choice...");
break;
}
}
}
void add()
{
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

char ch;
int n1;
//clrscr();
while(1)
{
new1=(stud *)malloc(sizeof(stud));
printf("\nEnter No:- ");
scanf("%d",&new1->no);
printf("\nEnter name:- ");
fflush(stdin);
gets(new1->name);
count++;
new1->next=head;
if(head==NULL)
head=new1;
else
tail->next=new1;
tail=new1;
printf("\n\tDo you want to Continue[Y/N]...");
ch=getchar();
fflush(stdin);
if(ch=='n' || ch=='N')
return 0;

void disp()
{
int c=0;
stud *temp;
temp=head;
if(head==NULL)
printf("\nSorry! List in Empty...");
else
{
while(temp->next!=head)
{
printf("\nNo:- %d",temp->no);
printf("\nName:- %s",temp->name);
temp=temp->next;
c++;
}
printf("\nNo:- %d",temp->no);
printf("\nName:- %d",temp->name);
c++;
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

}
printf("\n\nTotal No of Nodes=%d",c);
getch();
}
void search()
{
stud *temp;
int n,f=0;
temp=head;
printf("\nEnter Search No:- ");
scanf("%d",&n);
if(temp==NULL)
printf("\nSorry! List is Empty...");
else
while(temp->next!=head)
{
if(temp->no==n)
{
printf("\nNo:- %d",temp->no);
printf("\nName:- %s",temp->name);
f++;
}
temp=temp->next;
}
if(f==1)
printf("\n[%d] Found [%d] times...",n,f);
else
printf("\nSorry! Not Found....");
getch();
}
void del(int delet)
{
stud *temp,*temp1;
int n;
temp=head;
if(temp==NULL)
{
printf("\nSorry! List is Empty....");
sleep(3);
exit(0);;
}
else
{
if(head->no==delet)
{
temp=head;
head=head->next;
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

free(temp);
}
while(temp->next!=head)
{
if(temp->next->no==delet)
{
temp1=temp->next;
temp->next=temp1->next;
free(temp1);
}
temp=temp->next;
}
if(temp->next->no==delet)
{
temp1=temp->next;
temp->next=head;
free(temp1);
}
}
}
void add_beg()
{
clrscr();
new1=(stud *)malloc(sizeof(stud));
printf("\nEnter data to add at beginig....");
printf("\nEnter no:- ");
scanf("%d",&new1->no);
printf("\nEnter Name:- ");
fflush(stdin);
gets(new1->name);
if(head==NULL)
{
head=new1;
new1->next=new1;
}
else
{
new1->next=head;
head=new1;
tail->next=head;
}
getch();
}
void add_after(int pos)
{
int count=0;
stud *temp;
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

temp=head;
while(temp->next!=head)
{
count++;
if(count==pos)
{
new1=(stud *)malloc(sizeof(stud));
printf("\nEnter No. :- ");
scanf("%d",&new1->no);
printf("\nEnter Name:- ");
fflush(stdin);
gets(new1->name);
new1->next=temp->next;
temp->next=new1;
}
temp=temp->next;
}
}

void del(int n)
{
stud *temp,*q;
clrscr();
q=head;
while(q->next->next!=NULL)
{
if(q->next==n)
{
Temp=q->next;
q->next=temp->next;
free(temp);
}
q=q->next;
}
}

6. Doubly Linked List: Create, Display, Insertion, Deletion, Search, Reverse.

CODE:

#include<stdio.h>
#include<conio.h>
typedef struct student
{
int no;
struct student *prev;
struct student *next;
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

}stud;
stud *head,*tail,*new1;
void add(int);
void ins_beg();
void ins_after(int);
void disp();
void search(int);
void disp_rev();
void main()
{
int n;
char ch;
while(1)
{
clrscr();
printf("\n\t\t---------------------------------------------");
printf("\n\t\t\t1. Add Node");
printf("\n\t\t\t2. Display");
printf("\n\t\t\t3. Add at begining...");
printf("\n\t\t\t4. Add after node..");
printf("\n\t\t\t5. Search Node..");
printf("\n\t\t\t6. Display Reverse...");
printf("\n\t\t\t0. Exit");
printf("\n\n\t\t-------------------------------------------");
printf("\n\n\t\tEnter Your Choice....");
fflush(stdin);
ch=getchar();
switch(ch)
{
case '1':
printf("\nNumber of Node:- ");
scanf("%d",&n);
add(n);
break;
case '2':
disp();
break;
case '3':
ins_beg();
break;
case '4':
printf("\nEnter Node no after to insert:- ");
scanf("%d",&n);
ins_after(n);
break;
case '5':
printf("\nEnter Node no:- ");
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

scanf("%d",&n);
search(n);
break;
case '6':
disp_rev();
break;
case '0':
exit(0);
return;
default:
printf("\nInvalid Choice..");
break;
}
}
}
void add(int n)
{
int i;
for(i=0;i<n;i++)
{
new1=(stud *)malloc(sizeof(stud));
new1->next=NULL;
printf("\nEnter number:- ");
scanf("%d",&new1->no);
if(head==NULL)
{
head=new1;
head->prev=NULL;
}
else
{
new1->prev=tail;
tail->next=new1;
}
tail=new1;
}
getch();
}
void disp()
{
stud *temp;
int count=0;
temp=head;
clrscr();
while(temp!=NULL)
{
count++;
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

printf("\nNo=%d",temp->no);
temp=temp->next;
}
printf("\nNo. of times=%d",count);
getch();
}
void ins_beg()
{
stud *temp;
new1=(stud *)malloc(sizeof(stud));
printf("\nEnter no:- ");
scanf("%d",&new1->no);
new1->prev=NULL;
new1->next=head;
head=new1;
}
void ins_after(int n)
{
stud *temp,*temp1;
temp=head;
while(temp->next!=head)
{
if(temp->no==n)
{
new1=(stud *)malloc(sizeof(stud));
printf("\nEnter Number:- ");
scanf("%d",&new1->no);
new1->next=temp->next;
temp->next=new1;
new1->prev=temp;
return;
}
temp=temp->next;
}
}
void search(int n)
{
stud *temp;
int count=0;
temp=head;
while(temp!=NULL)
{
if(temp->no==n)
{
count++;
}
temp=temp->next;
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

}
printf("\n%d found %d times...",n,count);
getch();
}
void disp_rev()
{
stud *temp;
temp=tail;
while(tail->next!=NULL)
{
printf("\nNo.:- %d",temp->no);
temp=temp->prev;
}
getch();
}

7. Stack Implementation

CODE:

#include<stdio.h>
#include<conio.h>
typedef struct student
{
int no;
struct student *next;
}stud;
stud *top=NULL;
void push();
void disp();
void pop();
void main()
{
char ch;
while(1)
{
clrscr();
printf("\n\t\t------------------Main Menu-----------------");
printf("\n\t\t\t1.PUSH");
printf("\n\t\t\t2.POP");
printf("\n\t\t\t3.Display");
printf("\n\t\t\t4.Exit");
printf("\n\t\t--------------------------------------------");
printf("\n\n\tEnter Your Choice....");
fflush(stdin);
ch=getchar();
switch(ch)
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

{
case '1':
push();
break;
case '2':
pop();
break;
case '3':
disp();
break;
case '4':
exit(0);
return;
default:
printf("\nSorry! Invalid Choice...");
}
}
}
void push()
{
char ch;
stud *temp;
while(1)
{
temp=(stud *)malloc(sizeof(stud));
printf("\nEnter Element:- ");
scanf("%d",&temp->no);
temp->next=top;
top=temp;
printf("\nContinue[Y/N]...");
fflush(stdin);
ch=getchar();
if(ch=='n' || ch=='N')
break;
}
}
void pop()
{
stud *temp;
if(top==NULL)
{
printf("\nSorry! Stack underflow..");

}
else
{
temp=top;
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

printf("\nPopped element is %d",temp->no);


top=temp->next;
free(temp);
}
}
void disp()
{
stud *temp;
if(top==NULL)
printf("\nSorry! Stack is underflow...");
else
{
temp=top;
while(temp!=NULL)
{
printf("\nElement=%d",temp->no);
temp=temp->next;
}
}
getch();
}

8. Stack Application: Palindrome & Matching Parenthesis.

CODE:

#include<stdio.h>
#include<conio.h>
#define MAX 20
char st_arr[MAX];
int top=-1;
void push(char);
char pop();
void main()
{
int i,c=0;
char s[20],s1[20];
clrscr();
printf("\nEnter String:- ");
fflush(stdin);
gets(s);
for(i=0;s[i]!=NULL;i++)
{
push(s[i]);
c++;
}
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

for(i=0;i<c;i++)
{
if(s[i]!=pop())
break;
}
if(top==-1)
printf("\nPalindrome...");
else
printf("\nNot Palindrome...");
getch();
}
void push(char ch)
{
top++;
st_arr[top]=ch;
}
char pop()
{
char ch;
int j;
j=top;
ch=st_arr[top];
top--;
return ch;
}

9. STACK IMPLEMENTATION USING AN ARRAY

// Program implements array as a stack

#include <stdio.h>
#include <conio.h>
#define MAX 10
struct stack
{
int arr[MAX];
int top ;
};
struct stack s;
void push( int item ) ;
int pop( ) ;
void display();
// adds an element to the stack
void push ( int item )
{
if ( s.top == MAX - 1 )
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

{
printf("Stack is full" );
return ;
}
s.top++ ;
s.arr[s.top] = item ;
}

// removes an element from the stack


int pop( )
{
int data;
if ( s.top == -1 )
{
printf("Stack is empty");
return NULL ;
}
data = s.arr[s.top] ;
s.top-- ;
return data ;
}
void display()
{
int i;
if(s.top==-1)
{
printf("Stack is empty\n");
return;
}
printf("Stack contains following data \n");
for(i=s.top;i>=0;i--)
{
printf("%d\n",s.arr[i]);
}
}

void main( )
{
int choice,num,v;
s.top=-1;
do
{
clrscr();
printf("\n");
for(i=0;i<=50;i++)
{
printf("-");
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

delay(30);
}
printf("\n ENTER 1 FOR PUSH :: ");
printf("\n ENTER 2 FOR POP :: ");
printf("\n ENTER 3 FOR DISPLAY :: ");
printf("\n ENTER 4 FOR EXIT :: ");
scanf("%d",& choice);
printf("\n");
switch(choice)
{
case 1:
printf("\n\nEnter number you want to push in a stack ");
scanf("%d",&num);
push(num);
getch();
break;
case 2:
v = pop( ) ;
printf("\n\nItem popped: %d",v) ;
getch();
break;
case 3:
display();
getch();
break;
case 4:
break;
default :
printf("Wrong choice \n");
}
}
while(choice != 4);
getch();
}

10. INTERCONVERSION OF INFIX, POSTFIX, AND PREFIX

INFIX TO POSTFIX CONVERSION

// Program to convert an Infix form to Postfix form

#include <stdio.h>
#include <conio.h>
#include<string.h>
#include <ctype.h>
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

#define MAX 50

char target[MAX];
char stack[MAX];
char *s, *t ;
int top ;
char opr ;

void infix( ) ;
void setexpr ( char *str ) ;
void push ( char c ) ;
char pop( ) ;
void convert( ) ;
int priority ( char c ) ;
void show( ) ;

void infix( )
{
top = -1 ;
strcpy ( target, "" ) ;
strcpy ( stack, "" ) ;
t = target ;
s = "" ;
}

void setexpr ( char *str )


{
s = str ;
}

void push ( char c )


{
if ( top == MAX )
printf("\nStack is full\n");
else
{
top++ ;
stack[top] = c ;
}
}

char pop( )
{
if ( top == -1 )
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

{
printf("\nStack is empty\n");
return -1 ;
}
else
{
char item = stack[top] ;
top-- ;
return item ;
}
}

void convert( )
{
while ( *s )
{
if ( *s == ' ' || *s == '\t' )
{
s++ ;
continue ;
}
if ( isdigit ( *s ) || isalpha ( *s ) )
{
while ( isdigit ( *s ) || isalpha ( *s ) )
{
*t = *s ;
s++ ;
t++ ;
}
}
if ( *s == '(' )
{
push ( *s ) ;
s++ ;
}

if ( *s == '*' || *s == '+' || *s == '/' || *s == '%' || *s == '-' || *s == '$' )


{
if ( top != -1 )
{
opr = pop( ) ;
while ( priority ( opr ) >= priority ( *s ) )
{
*t = opr ;
t++ ;
opr = pop( ) ;
}
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

if ( opr != -1)
push ( opr ) ;
push ( *s ) ;
}
else
push ( *s ) ;
s++ ;
}
if ( *s == ')' )
{
opr = pop( ) ;
while ( ( opr ) != '(' )
{
*t = opr ;
t++ ;
opr = pop( ) ;
}
s++ ;
}
}
while ( top != -1 )
{ {
char opr = pop( ) ;
*t = opr ;
t++ ;
}

*t = '\0' ;
}// returns the priority of an operator
int priority ( char c )
{
if ( c == '$' )
return 3 ;
if ( c == '*' || c == '/' || c == '%' )
return 2 ;
else
{
if ( c == '+' || c == '-' )
return 1 ;
else
return 0 ;
}
}
// displays the postfix form of given expr.
void show( )
{
printf("%s",target);
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

}
void main( )
{
char expr[MAX] ;
clrscr();
printf("\nEnter an expression in infix form: ") ;
scanf("%s",&expr);
infix();
setexpr (expr) ;
convert( ) ;
printf("\nThe postfix expression is: ");
show( ) ;
getch();
}

INFIX TO PREFIX CONVERSION

// Program to convert an Infix expression to Prefix form

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define MAX 50

char target[MAX], stack[MAX] ;


char *s, *t ;
int top, l ;

void infix( ) ;
void setexpr ( char *str ) ;
void push ( char c ) ;
char pop( ) ;
void convert( ) ;
int priority ( char c ) ;
void show( ) ;

// initializes data member


void infix( )
{
top = -1 ;
strcpy (target,"" ) ;
strcpy (stack,"" ) ;
l=0;
}
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

// reverses the given expression


void setexpr ( char *str )
{
s = str ;
strrev ( s ) ;
l = strlen ( s ) ;
* ( target + l ) = '\0' ;
t = target + ( l - 1 ) ;
}

// adds operator to the stack


void push ( char c )
{
if ( top == MAX - 1 )
printf("\nStack is full\n");
else
{
top++ ;
stack[top] = c ;
}
}

// pops an operator from the stack


char pop( )
{
if ( top == -1 )
{
printf("Stack is empty\n");
return -1 ;
}
else
{
char item = stack[top] ;
top-- ;
return item ;
}
}

// converts the infix expr. to prefix form


void convert( )
{
char opr ;

while ( *s )
{
if ( *s == ' ' || *s == '\t' )
{
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

s++ ;
continue ;
}

if ( isdigit ( *s ) || isalpha ( *s ) )
{
while ( isdigit ( *s ) || isalpha ( *s ) )
{
*t = *s ;
s++ ;
t-- ;
}
}

if ( *s == ')' )
{
push ( *s ) ;
s++ ;
}

if ( *s == '*' || *s == '+' || *s == '/' ||


*s == '%' || *s == '-' || *s == '$' )
{
if ( top != -1 )
{
opr = pop( ) ;

while ( priority ( opr ) > priority ( *s ) )


{
*t = opr ;
t-- ;
opr = pop( ) ;
printf("%c",opr );
}
if(opr != -1)
push ( opr ) ;
push ( *s ) ;
}
else
push ( *s ) ;
s++ ;
}

if ( *s == '(' )
{
opr = pop( ) ;
while ( ( opr ) != ')' )
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

{
*t = opr ;
t-- ;
opr = pop ( ) ;
}
s++ ;
}
}

while ( top != -1 )
{
opr = pop( ) ;
*t = opr ;
t-- ;
}
t++ ;
}

// the priotity of the operator


int priority ( char c )
{
if ( c == '$' )
return 3 ;
if ( c == '*' || c == '/' || c == '%' )
return 2 ;
else
{
if ( c == '+' || c == '-' )
return 1 ;
else
return 0 ;
}
}

// the prefix form of given expr.


void show( )
{
while ( *t )
{
printf("%c",*t);
t++ ;
}
}

void main( )
{
char expr[MAX] ;
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

clrscr();
printf("\nEnter an expression in infix form: ");
scanf("%s",&expr);
infix();
setexpr( expr ) ;
convert( ) ;
printf("The Prefix expression is: ");
show( );
getch();
}

PREFIX TO POST FIX

#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#define MAX 50

char target[MAX], stack[MAX] ;


char *s, *t ;
int top ;
char opr ;

void infix( ) ;
void setexpr ( char *str ) ;
void push ( char c ) ;
char pop( ) ;
void convert( ) ;
int priority ( char c ) ;
void show( ) ;

// initializes data members


void infix( )
{
top = -1 ;
strcpy ( target, "" ) ;
strcpy ( stack, "" ) ;
t = target ;
s = "" ;
}

// sets s to point to given expr.


void setexpr ( char *str )
{
s = str ;
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

// adds an operator to the stack


void push ( char c )
{
if ( top == MAX )
printf("\nStack is full\n");
else
{
top++ ;
stack[top] = c ;
}
}

// pops an operator from the stack


char pop( )
{
if ( top == -1 )
{
printf("\nStack is empty\n");
return -1 ;
}
else
{
char item = stack[top] ;
top-- ;
return item ;
}
}

// converts the given expr. from infix to postfix form


void convert( )
{
while ( *s )
{
if ( *s == ' ' || *s == '\t' )
{
s++ ;
continue ;
}
if ( isdigit ( *s ) || isalpha ( *s ) )
{
while ( isdigit ( *s ) || isalpha ( *s ) )
{
*t = *s ;
s++ ;
t++ ;
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

}
}
if ( *s == '(' )
{
push ( *s ) ;
s++ ;
}

if ( *s == '*' || *s == '+' || *s == '/' || *s == '%' || *s == '-' || *s == '$' )


{
if ( top != -1 )
{
opr = pop( ) ;
while ( priority ( opr ) >= priority ( *s ) )
{
*t = opr ;
t++ ;
opr = pop( ) ;
}
if ( opr != -1)
push ( opr ) ;
push ( *s ) ;
}
else
push ( *s ) ;
s++ ;
}

if ( *s == ')' )
{
opr = pop( ) ;
while ( ( opr ) != '(' )
{
*t = opr ;
t++ ;
opr = pop( ) ;
}
s++ ;
}
}

while ( top != -1 )
{
char opr = pop( ) ;
*t = opr ;
t++ ;
}
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

*t = '\0' ;
}

// returns the priority of an operator


int priority ( char c )
{
if ( c == '$' )
return 3 ;
if ( c == '*' || c == '/' || c == '%' )
return 2 ;
else
{
if ( c == '+' || c == '-' )
return 1 ;
else
return 0 ;
}
}
// displays the postfix form of given expr.
void show( )
{
printf("%s",target);
getch();
}
void main( )
{
char expr[MAX] ;
clrscr();
printf("\nEnter an expression in infix form: ");
scanf("%s",&expr) ;
infix();
setexpr ( expr ) ;
convert( ) ;
printf("\nThe postfix expression is: " );
show( ) ;
getch();
}
7. PALENDROME USING STACK

/*PROGRAM FOR PALINDROME USING STACK*/


#include<stdio.h>
#include<conio.h>
#include<string.h>
#define max 10
int top=-1;
char stack[max];
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

void push(char *);


void display(char *);
void main()
{
int ch=1;
char str[10];
char *t;
char *s;
clrscr();
printf("Enter any string\n");
gets(str);
t=str;
s=str;
if(top==max-1)
printf("Stack is full");
while(*t!='\0')
{
top=top+1;
stack[top]=*t;
t++;
}
while(*s!='\0')
{
if(*s!=stack[top])
{
ch=0;
break;
}
s++;
top--;
}

if(ch==0)
printf("It is not pallindrom");
else
printf("It is pallindrom");
getch();
}
/*
OUTPUT
Enter any string
NARROW
It is not pallindrom
Enter any string
NITIN
It is pallindrom
*/
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

11. QUEUE IMPLENTATION

Circular Queue

#include<stdio.h>
#include<conio.h>
#define MAX 100
int dquee_arr[MAX];
int left = -1;
int right = -1;
void add_right();
void add_left();
void del_left();
void del_right();
void display();
void main()
{
int choice,i;
clrscr();
for(;;)
{
printf("\n");
for(i=0;i<=50;i++)
{
printf("-");
delay(30);
}
printf("\n ENTER 1 FOR ADD ELEMENT AT RIGHT:: ");
printf("\n ENTER 2 FOR ADD ELEMENT AT LEFT:: ");
printf("\n ENTER 3 FOR DELETE ELEMENT FROM RIGHT:: ");
printf("\n ENTER 4 FOR DELETE ELEMENT FROM LEFT:: ");
printf("\n ENTER 5 FOR DISPLAY QUEUE::");
printf("\n ENTER 0 FOR EXIT:: ");
scanf("%d",& choice);
printf("\n");
switch(choice)
{
case 1: add_right();
break;
case 2: add_left();
break;
case 3: del_right();
break;
case 4: del_left();
break;
case 5: display();
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

break;
case 0: exit(1);
default:printf("\n ENTERE THE CORRECT CHOICE!!");
}
}
}

void add_right()
{
int add_ele;
if((left==0 && right==MAX-1)||left==right+1)
{
printf("\n queue size overflow!!");
return;
}
if(left==-1)
{
left=0;
right=0;
}
else
if(right==MAX-1)
right=0;
else
right=right+1;

printf("\n ENTER ELEMENT TO ADD:: ");


scanf("%d",&add_ele);
dquee_arr[right]=add_ele;

void add_left()
{
int add_ele;
if((left==0 && right==MAX-1)||left==right+1)
{
printf("\n queue size overflow!!");
return;
}
if(left==-1)
{
left=0;
right=0;
}
else
if(left==0)
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

left=MAX-1;
else
left=left-1;

printf("\n ENTER ELEMENT TO ADD:: ");


scanf("%d",&add_ele);
dquee_arr[left]=add_ele;

void del_left()
{
if(left==-1)
printf("\n QUEUE IS EMPTY!!");
else
printf("\n DELETED ITEM IS ::%d",dquee_arr[left]);
if(left==right)
{
left=0;
right=0;
}
else
{
if(left==MAX-1)
left=0;
else
left=left+1;
}
}

void del_right()
{
if(left==-1)
{
printf("\n QUEUE IS EMPTY!!");
return;
}
else
printf("\n DELETED ITEM IS ::%d",dquee_arr[right]);
if(left==right)
{
left=-1;
right=-1;
}
else
{
if(right==MAX-1)
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

right=0;
else
right=right-1;
}
}

void display()
{
int f,r;
printf("\n\n");
if(left<=right)
for(f=left;f<=right;f++)
printf("\n element --> %d",dquee_arr[f]);
else
{
for(f=left;f<=MAX-1;f++)
printf("\n element --> %d",dquee_arr[f]);
for(f=0;f<=right;f++)
printf("\n element --> %d",dquee_arr[f]);
}
printf("\n\n");
}

12. DeQueue

#include<stdio.h>
#include<conio.h>
#define MAX 100
int dquee_arr[MAX];
int left = -1;
int right = -1;
void add_right();
void add_left();
void del_left();
void del_right();
void display();
void main()
{
int choice,i;
clrscr();
for(;;)
{
printf("\n");
for(i=0;i<=50;i++)
{
printf("-");
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

delay(30);
}
printf("\n ENTER 1 FOR ADD ELEMENT AT RIGHT:: ");
printf("\n ENTER 2 FOR ADD ELEMENT AT LEFT:: ");
printf("\n ENTER 3 FOR DELETE ELEMENT FROM RIGHT:: ");
printf("\n ENTER 4 FOR DELETE ELEMENT FROM LEFT:: ");
printf("\n ENTER 5 FOR DISPLAY QUEUE::");
printf("\n ENTER 0 FOR EXIT:: ");
scanf("%d",& choice);
printf("\n");
switch(choice)
{
case 1: add_right();
break;
case 2: add_left();
break;
case 3: del_right();
break;
case 4: del_left();
break;
case 5: display();
break;
case 0: exit(1);
default:printf("\n ENTERE THE CORRECT CHOICE!!");
}
}
}

void add_right()
{
int add_ele;
if((left==0 && right==MAX-1)||left==right+1)
{
printf("\n queue size overflow!!");
return;
}
if(left==-1)
{
left=0;
right=0;
}
else
if(right==MAX-1)
right=0;
else
right=right+1;
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

printf("\n ENTER ELEMENT TO ADD:: ");


scanf("%d",&add_ele);
dquee_arr[right]=add_ele;

void add_left()
{
int add_ele;
if((left==0 && right==MAX-1)||left==right+1)
{
printf("\n queue size overflow!!");
return;
}
if(left==-1)
{
left=0;
right=0;
}
else
if(left==0)
left=MAX-1;
else
left=left-1;

printf("\n ENTER ELEMENT TO ADD:: ");


scanf("%d",&add_ele);
dquee_arr[left]=add_ele;

void del_left()
{
if(left==-1)
printf("\n QUEUE IS EMPTY!!");
else
printf("\n DELETED ITEM IS ::%d",dquee_arr[left]);
if(left==right)
{
left=0;
right=0;
}
else
{
if(left==MAX-1)
left=0;
else
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

left=left+1;
}
}

void del_right()
{
if(left==-1)
{
printf("\n QUEUE IS EMPTY!!");
return;
}
else
printf("\n DELETED ITEM IS ::%d",dquee_arr[right]);
if(left==right)
{
left=-1;
right=-1;
}
else
{
if(right==MAX-1)
right=0;
else
right=right-1;
}
}

void display()
{
int f,r;
printf("\n\n");
if(left<=right)
for(f=left;f<=right;f++)
printf("\n element --> %d",dquee_arr[f]);
else
{
for(f=left;f<=MAX-1;f++)
printf("\n element --> %d",dquee_arr[f]);
for(f=0;f<=right;f++)
printf("\n element --> %d",dquee_arr[f]);
}
printf("\n\n");
}
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

13. JOB SCHEDULING

// Program that implements a priority queue using an array


#include <string.h>
#include <conio.h>
#define MAX 5
struct data
{
char job[MAX] ;
int prno ;
int ord ;
}d[MAX] ;

int front, rear ;


void add ( struct data dt ) ;
struct data remove( ) ;

// adds item to the priority queue


void add ( struct data dt )
{
int i,j;
struct data temp ;
if ( rear == MAX - 1 )
{
printf("\nQueue is full") ;
return ;
}
rear++ ;
d[rear] = dt ;

if ( front == -1 )
front = 0 ;

for ( i = front ; i <= rear ; i++ )


{
for ( j = i + 1 ; j <= rear ; j++ )
{
if ( d[i].prno > d[j].prno )
{
temp = d[i] ;
d[i] = d[j] ;
d[j] = temp ;
}
else
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

{
if ( d[i].prno == d[j].prno )
{
if ( d[i].ord > d[j].ord )
{
temp = d[i] ;
d[i] = d[j] ;
d[j] = temp ;
}
}
}
}
}
}

// removes item from priority queue


struct data remove( )
{
struct data t ,t1;
strcpy ( t.job, "" ) ;
t.prno = 0 ;
t.ord = 0 ;

if ( front == -1 )
{
printf("\nQueue is Empty") ;
return t ;
}

t1 = d[front] ;
d[front] = t ;
if ( front == rear )
front = rear = -1 ;
else
front++ ;

return t1 ;
}

void main( )
{
struct data dt,temp;
int i,j = 0 ;
front = rear = -1;
clrscr();
printf("Enter Job description (max 4 chars) and its priority\n");
printf("Lower the priority number, higher the priority") ;
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

printf("\nJob Priority\n");

for ( i = 0 ; i < MAX ; i++ )


{
scanf("%s%d", &dt.job,&dt.prno);
dt.ord = j++;
add(dt);
}
printf("\nProcess jobs prioritywise\n");
printf("Job Priority\n");

for ( i = 0 ; i < MAX ; i++ )


{
temp = remove( ) ;
printf("%s\t\t%d\n", temp.job,temp.prno);
}
getch();
}

14. EVALUATION OF POSTFIX EXPRESSION

// Program to evaluate an epression entered in postfix form

#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <ctype.h>
#define MAX 50

int stack[MAX] ;
int top, nn,data;
char *s ;

void postfix( ) ;
void setexpr ( char *str ) ;
void push ( int item ) ;
int pop( ) ;
void calculate( ) ;
void show( ) ;

void postfix( )
{
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

top = -1 ;
}

void setexpr ( char *str )


{
s = str ;
}

void push ( int item )


{
if ( top == MAX - 1 )
printf("Stack is full");
else
{
top++ ;
stack[top] = item ;
}
}

int pop( )
{
if ( top == -1 )
{
printf("Stack is empty");
return NULL ;
}
data = stack[top] ;
top-- ;
return data ;
}

void calculate( )
{
int n1, n2, n3 ;
while ( *s )
{
/* skip whitespace, if any*/
if ( *s == ' ' || *s == '\t' )
{
s++ ;
continue ;
}
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

/* if digit is encountered */
if ( isdigit ( *s ) )
{
nn = *s- '0';
push ( nn ) ;
}
else
{
/* if operator is encountered */
n1 = pop( ) ;
n2 = pop( ) ;
switch ( *s )
{
case '+' :
n3 = n2 + n1 ;
break ;

case '-' :
n3 = n2 - n1 ;
break ;

case '/' :
n3 = n2 / n1 ;
break ;

case '*' :
n3 = n2 * n1 ;
break ;

case '%' :
n3 = n2 % n1 ;
break ;

case '$' :
n3 = pow ( n2 , n1 ) ;
break ;

default :
printf("Unknown operator");
exit ( 1 ) ;
}

push ( n3 ) ;
}
s++ ;
}
}
NAME :Pindariya bhavesh p SUBJECT : DS
COURSE: MCA ROLL NO: B-29

// displays the result


void show( )
{
nn = pop ( ) ;
printf("\nResult is:%d ",nn);
}

void main( )
{
char expr[MAX] ;
clrscr();
printf("\nEnter postfix expression to be evaluated : ") ;
scanf("%s",expr);
clrscr();
postfix ();
setexpr ( expr ) ;
calculate( ) ;
show( ) ;
getch();
}

You might also like