Header Ads Widget

Responsive Advertisement

Stack Push Pop Operation Using Array

 



#include <stdio.h>
#include <stdlib.h>

struct stack
{
    int size;
    int top;
    int *arr;
};

int isFull(struct stack *ptr)
{
    if (ptr->top == ptr->size - 1)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

int isEmpty(struct stack *ptr)
{
    if (ptr->top == -1)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

void push(struct stack *ptr, int val)
{
    if (isFull(ptr))
    {
        printf("Stack Overflow, Can't push value =  %d\n", val);
    }
    else
    {
        ptr->top++;
        ptr->arr[ptr->top] = val;
    }
}

int pop(struct stack *ptr)
{
    if (isEmpty(ptr))
    {
        printf("Stack Underflow, Can't pop"  );
        return -11;
    }
    else
    {
        int val = ptr->arr[ptr->top];
        ptr->top--;
        return val;
    }
}

int main()
{
    struct stack *sp = (struct stack *)malloc(sizeof(struct stack));
    sp->size = 10;
    sp->top = -1;
    sp->arr = (int *)malloc(sp->size * sizeof(int));
    printf("Before Push, Full  : %d\n", isFull(sp));
    printf("Before Push, Empty : %d\n", isEmpty(sp));

    push(sp, 52);
    push(sp, 52);
    push(sp, 52);
    push(sp, 52);
    push(sp, 52);
    push(sp, 52);
    push(sp, 52);
    push(sp, 52);
    push(sp, 52);
    push(sp, 2);
    // push(sp, 26);

    printf("After Push, Full  : %d\n", isFull(sp));
    printf("After Push, Empty : %d\n", isEmpty(sp));

    printf("Popped %d from thr Stack\n", pop(sp));
    printf("Popped %d from thr Stack\n", pop(sp));
    return 0;
}

Post a Comment

0 Comments