#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; } return 0; } int isEmpty(struct stack*ptr){ if(ptr->top == -1){ return 1; } return 0; } void push(struct stack* ptr, int val){ if(isFull(ptr)){ printf("stack overflow"); } else{ ptr->top++; ptr->arr[ptr->top] = val; } } int pop(struct stack *ptr){ if(isEmpty(ptr)){ printf("stack underflow"); } else{ int val = ptr->arr[ptr->top]; ptr->top--; return val; } } int peek(struct stack* sp,int i){ if(sp->top-i+1<0){ printf("invalid position\n"); return -1; } return sp->arr[sp->top-i+1]; } 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("stack is successfully created "); printf("Before pushing, Full: %d\n", isFull(sp)); printf("Before pushing, Empty: %d\n", isEmpty(sp)); push(sp, 1); push(sp, 23); push(sp, 99); push(sp, 75); push(sp, 3); push(sp, 64); push(sp, 57); push(sp, 46); push(sp, 89); push(sp, 6); // ---> Pushed 10 values // push(sp, 46); // Stack Overflow since the size of the stack is 10 printf("After pushing, Full: %d\n", isFull(sp)); printf("After pushing, Empty: %d\n", isEmpty(sp)); printf("Popped %d from the stack\n", pop(sp)); // --> Last in first out! printf("Popped %d from the stack\n", pop(sp)); // --> Last in first out! printf("Popped %d from the stack\n", pop(sp)); // --> Last in first out! for(int j=1; j<= sp->top+1; j++){ printf("positon %d : %d\n",j,peek(sp,j)); } return 0; }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter