DSA Lab 8 program
Program for implementing multiple stack.
#include <stdio.h>
#include <stdlib.h>
struct stack {
int maxstack;
int *stack;
int top;
};
int isEmpty(struct stack* ptr) {
if (ptr->top == -1) {
return 1;
} else {
return 0;
}
}
int isFull(struct stack* ptr) {
if (ptr->top == ptr->maxstack - 1) {
return 1;
} else {
return 0;
}
}
int peek(struct stack* ptr) {
return ptr->stack[ptr->top];
}
int pop(struct stack* ptr) {
if (isEmpty(ptr)) {
printf("Stack Underflow! Cannot pop from the stack\n");
return -1;
} else {
int val = ptr->stack[ptr->top];
printf("Your Data has been Deleted in Stack\n");
ptr->top--;
return val;
}
}
void push(struct stack* ptr, int val) {
if (isFull(ptr)) {
printf("Stack Overflow! Cannot push %d to the stack\n", val);
} else {
ptr->top++;
ptr->stack[ptr->top] = val;
printf("Your Data has been Added in Stack\n");
}
}
int main() {
// Stack 1
printf("Stack 1 is Start \n");
struct stack *s1 = malloc(sizeof(struct stack));
s1->maxstack = 80;
s1->top = -1;
s1->stack = malloc(s1->maxstack * sizeof(int));
printf("Stack full: %s\n", isFull(s1) ? "true" : "false");
printf("Stack empty: %s\n", isEmpty(s1) ? "true" : "false");
push(s1, 1);
push(s1, 2);
push(s1, 3);
push(s1, 4);
push(s1, 5);
pop(s1);
pop(s1);
free(s1->stack);
free(s1);
printf("Stack 1 is End \n\n\n");
// Stack 2
printf("Stack 2 is Start \n");
struct stack *s2 = malloc(sizeof(struct stack));
s2->maxstack = 80;
s2->top = -1;
s2->stack = malloc(s2->maxstack * sizeof(int));
printf("Stack full: %s\n", isFull(s2) ? "true" : "false");
printf("Stack empty: %s\n", isEmpty(s2) ? "true" : "false");
push(s2, 1);
push(s2, 2);
push(s2, 3);
push(s2, 4);
push(s2, 5);
pop(s2);
pop(s2);
free(s2->stack);
free(s2);
printf("Stack 2 is End \n\n\n");
// Stack 3
printf("Stack 3 is Start \n");
struct stack *s3 = malloc(sizeof(struct stack));
s3->maxstack = 80;
s3->top = -1;
s3->stack = malloc(s3->maxstack * sizeof(int));
printf("Stack full: %s\n", isFull(s3) ? "true" : "false");
printf("Stack empty: %s\n", isEmpty(s3) ? "true" : "false");
push(s3, 1);
push(s3, 2);
push(s3, 3);
push(s3, 4);
push(s3, 5);
pop(s3);
pop(s3);
free(s3->stack);
free(s3);
printf("Stack 3 is End \n");
return 0;
}
# Output
Stack 1 is Start
Stack full: false
Stack empty: true
Your Data has been Added in Stack
Your Data has been Added in Stack
Your Data has been Added in Stack
Your Data has been Added in Stack
Your Data has been Added in Stack
Your Data has been Deleted in Stack
Your Data has been Deleted in Stack
Stack 1 is End
Stack 2 is Start
Stack full: false
Stack empty: true
Your Data has been Added in Stack
Your Data has been Added in Stack
Your Data has been Added in Stack
Your Data has been Added in Stack
Your Data has been Added in Stack
Your Data has been Deleted in Stack
Your Data has been Deleted in Stack
Stack 2 is End
Stack 3 is Start
Stack full: false
Stack empty: true
Your Data has been Added in Stack
Your Data has been Added in Stack
Your Data has been Added in Stack
Your Data has been Added in Stack
Your Data has been Added in Stack
Your Data has been Deleted in Stack
Your Data has been Deleted in Stack
Stack 3 is End
Comments
Post a Comment