Write a menu driven modular C program to simulate the basic stack operations like push, pop, peek.
Menu options
- Push
- POP
- Peek
-1. Exit
Input Format
The input contains the option number followed by an element only in case of push operation.
Constraints
NA
Output Format
For each case display the output in a new line.
Sample Input 0
1 10
1 20
1 30
2
3
2
1 40
3
-1
Sample Output 0
30
20
20
40
Explanation 0
1 10, push 10 on top of the stack.
1 20, push 20 on top of the stack.
1 30, push 30 on top of the stack.
2 is pop, pop an element from top of stack which is 30 and print it.
3 is peek, get top of stack which is 20, peek and print 20.
2 is pop, pop an element from top of stack 20 and print it
1 40, push 40 on top of stack
3 is peek, get top of stack which is 40 and print it.
-1 is stop.
Sample Input 1
1 10
1 20
1 30
2
2
2
2
1 40
3
-1
Sample Output 1
30
20
10
stack underflow
40
Explanation 1
1 10, push 10
1 20, push 20
1 30, push 30
2, pop an element from top of stack which is 30 and print it.
2, pop an element from top of stack which is 20 and print it.
2, pop an element from top of stack which is 10 and print it.
2, pop, but the stack is empty therefore print stack underflow
1 40, push 40
3 peek, get the top, which is 40 and print it
-1 stop.
CODE:
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #define SIZE 100 struct stack { int data[SIZE]; int top; }; void push(struct stack *sptr, int num); void pop(struct stack *sptr); void display(struct stack *sptr); void peek(struct stack *sptr); int main() { struct stack * sptr; struct stack s; sptr=&s; sptr->top=-1; int num,ch; while(1) { scanf("%d",&ch); switch(ch) { case 1: scanf("%d",&num); push(sptr,num); break; case 2:pop(sptr); break; case 3:peek(sptr); printf("\n"); break; case -1:exit(0); break; default:printf("Enter valid choice\n"); break; } } return 0; } void push(struct stack *sptr, int num) { if(sptr->top==SIZE-1) { printf("stack Overflow\n"); } else { sptr->top++; sptr->data[sptr->top]=num; } } void pop(struct stack *sptr) { int num; if(sptr->top==-1) { printf("stack underflow\n"); } else { num=sptr->data[sptr->top]; sptr->top--; printf("%d \n",num); } } void peek(struct stack *sptr) { if(sptr->top==-1) { printf("Stack empty\n"); } else { printf("%d",sptr->data[sptr->top]); } }
OUTPUT
Congratulations, you passed the sample test case. Click the Submit Code button to run your code against all the test cases. Input (stdin) 1 10 1 20 1 30 2 3 2 1 40 3 -1 Your Output (stdout) 30 20 20 40 Expected Output 30 20 20 40
Please find some more codes of Loops, Condition Statements, 1D Arrays, 2D Arrays, Strings, Pointers, Data Structures, Files, Linked lists, Stacks, Queues, Binary Trees, MISC, Solved model question papers & Hacker Rank all solutions on the below page:
Top 100+ C Programming codes – KLE Technological University