Datastructure Practical - 2
Datastructure Practical - 2
DATA STRUCTURE(CE317)
Tutorial - 2
R.K. UNIVERSITY 1
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
Output :
R.K. UNIVERSITY 2
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
#include<stdio.h>
int stack[100],choice,n,top,x,i;
void push(void);
void pop(void);
void display(void);
void peek();
int main()
top=-1;
int r;
scanf("%d",&n);
scanf("%d",&r);
if(r==0)
printf("\n--------------------------------");
printf("\n\t1.PUSH\n\t2.POP\n\t3.PEEK\n\t4.DISPLAY\n\t5.EXIT");
scanf("%d",&choice);
R.K. UNIVERSITY 3
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
if(choice==1)
if(top==n)
printf("Stack is overflow.");
else
int data;
scanf("%d",&data);
top = top + 1;
stack[top] = data;
else if(choice==2)
if(top==-1)
printf("Stack is underflow");
else
R.K. UNIVERSITY 4
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
int data;
stack[top] = data;
top = top - 1;
else if(choice==3)
if(top==-1)
printf("Stack is underflow");
else
else if(choice==4)
if(top>=0)
R.K. UNIVERSITY 5
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
printf("\n%d",stack[i]);
else
else
else
printf("\n--------------------------------");
printf("\n\t1.PUSH\n\t2.POP\n\t3.PEEEK\n\t4.DISPLAY\n\t5.EXIT");
do
scanf("%d",&choice);
switch(choice)
R.K. UNIVERSITY 6
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
case 1:
push();
break;
case 2:
pop();
break;
case 3:
display();
break;
case 4:
peek();
break;
case 5:
break;
R.K. UNIVERSITY 7
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
default:
while(choice!=5);
return 0;
void push()
if(top>=n-1)
else
scanf("%d",&x);
top++;
R.K. UNIVERSITY 8
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
stack[top]=x;
void pop()
if(top<=-1)
else
top--;
void peek()
if(top==-1)
printf("Stack is underflow");
else
R.K. UNIVERSITY 9
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
void display()
if(top>=0)
printf("\n%d",stack[i]);
else
R.K. UNIVERSITY 10
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
Output :
R.K. UNIVERSITY 11
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
#include <stdio.h>
#include <stdlib.h>
struct node
int info;
}*top,*top1,*temp;
int topelement();
void pop();
void empty();
void display();
void destroy();
void stack_count();
void create();
int count = 0;
int main()
R.K. UNIVERSITY 12
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
printf("\n 1 - Push");
printf("\n 2 - Pop");
printf("\n 3 - Top");
printf("\n 4 - Empty");
printf("\n 5 - Exit");
printf("\n 6 - Display");
create();
while (1)
scanf("%d", &ch);
switch (ch)
case 1:
scanf("%d", &no);
R.K. UNIVERSITY 13
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
push(no);
break;
case 2:
pop();
break;
case 3:
if (top == NULL)
else
e = topelement();
break;
case 4:
empty();
break;
case 5:
exit(0);
case 6:
display();
break;
case 7:
R.K. UNIVERSITY 14
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
stack_count();
break;
case 8:
destroy();
break;
default :
break;
return 0;
void create()
top = NULL;
void stack_count()
R.K. UNIVERSITY 15
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
if (top == NULL)
top->ptr = NULL;
top->info = data;
else
temp->ptr = top;
temp->info = data;
top = temp;
count++;
void display()
top1 = top;
if (top1 == NULL)
R.K. UNIVERSITY 16
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
printf("Stack is empty");
return;
top1 = top1->ptr;
void pop()
top1 = top;
if (top1 == NULL)
return;
else
top1 = top1->ptr;
R.K. UNIVERSITY 17
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
free(top);
top = top1;
count--;
int topelement()
return(top->info);
void empty()
if (top == NULL)
else
void destroy()
top1 = top;
R.K. UNIVERSITY 18
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
top1 = top->ptr;
free(top);
top = top1;
top1 = top1->ptr;
free(top1);
top = NULL;
count = 0;
R.K. UNIVERSITY 19
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
Output :
Infix to postfix conversion
R.K. UNIVERSITY 20
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct Stack
int top;
unsigned capacity;
int* array;
};
malloc(sizeof(struct Stack));
if (!stack)
return NULL;
stack->top = -1;
R.K. UNIVERSITY 21
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
stack->capacity = capacity;
sizeof(int));
return stack;
return stack->top == -1 ;
return stack->array[stack->top];
if (!isEmpty(stack))
return stack->array[stack->top--] ;
return '$';
R.K. UNIVERSITY 22
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
stack->array[++stack->top] = op;
switch (ch)
case '+':
case '-':
return 1;
case '*':
case '/':
return 2;
case '^':
return 3;
R.K. UNIVERSITY 23
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
return -1;
int i, k;
if(!stack)
return -1 ;
if (isOperand(exp[i]))
exp[++k] = exp[i];
push(stack, exp[i]);
R.K. UNIVERSITY 24
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
exp[++k] = pop(stack);
return -1;
else
pop(stack);
else
exp[++k] = pop(stack);
push(stack, exp[i]);
while (!isEmpty(stack))
exp[++k] = pop(stack );
exp[++k] = '\0';
R.K. UNIVERSITY 25
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
int main()
infixToPostfix(exp);
return 0;
R.K. UNIVERSITY 26
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
Output :
Evaluation of postfix expression
R.K. UNIVERSITY 27
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
struct Stack
int top;
unsigned capacity;
int* array;
};
stack->top = -1;
stack->capacity = capacity;
R.K. UNIVERSITY 28
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
return stack;
return stack->top == -1 ;
return stack->array[stack->top];
if (!isEmpty(stack))
return stack->array[stack->top--] ;
return '$';
R.K. UNIVERSITY 29
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
stack->array[++stack->top] = op;
int i;
if (isdigit(exp[i]))
else
switch (exp[i])
R.K. UNIVERSITY 30
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
return pop(stack);
int main()
return 0;
R.K. UNIVERSITY 31
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
Output :
To demonstrate the use of multiple stack
R.K. UNIVERSITY 32
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
R.K. UNIVERSITY 33
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
#include<stdio.h>
#include<conio.h>
#define MAX_X 5
#define MAX_Y 5
int topx=-1;
int topy=10;
int info;
if(topx>=(MAX_X-1))
{ printf("\nStack OverFlow");
return;
else
scanf("%d",&info);
topx++;
stack[topx]=info;
}}
R.K. UNIVERSITY 34
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
int info;
if(topy<=(MAX_Y))
printf("\nStack OverFlow");
return;
else
scanf("%d",&info);
topy--;
stack[topy]=info;
{ if(topx==-1)
printf("Stack X is Underflow");
return;
R.K. UNIVERSITY 35
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
else
topx--;
{ if(topy==10)
{printf("Stack y is Underflow");
return;
else
topy++;
}}
int i;
if(topx==-1)
R.K. UNIVERSITY 36
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
printf("Stack X is Empty");
return;
else
{ for(i=topx;i>=0;i--)
{printf("%d,",stack[i]);}
printf("\n");
}}
int i;
if(topy==10)
{printf("Stack Y is Empty");
return;}
else
{for(i=topy;i<=9;i++)
printf("%d,",stack[i]);
printf("\n");
} }
R.K. UNIVERSITY 37
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
int main()
{ int choice;
char ch;
int stack[MAX_X+MAX_Y];
do
{ printf("1.Push_X\n2.Push_Y");
printf("\n3.Pop_X\n4.Pop_Y");
printf("\n5.Display_X\n6.Display_Y");
printf("\n7.Exit");
scanf("%d",&choice);
switch(choice)
case 1: push_x(stack);break;
case 2: push_y(stack);break;
case 3: pop_x(stack);break;
case 4: pop_y(stack);break;
case 5: display_x(stack);break;
case 6: display_y(stack);break;
case 7: break;
R.K. UNIVERSITY 38
20SOECE13007_DURAGIYA HITESH V. DATA STRUCTURE(CE317)
}while(choice!=7);
return 0;
R.K. UNIVERSITY 39