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

Popular posts from this blog

Keyword , Identifier, Indentation, Comments & Documentation

DSA Lab 7 Program