MIT-Curricular/DS/C/endsem-omnibus/stacks.c

80 lines
1.6 KiB
C

#include <stdio.h>
#define MAX_SIZE 100
int top = -1;
int stack[MAX_SIZE];
void push(int c) {
if (top < MAX_SIZE - 1) {
stack[++top] = c;
} else {
printf("Stack overflow\n");
}
}
int pop() {
if (top >= 0) {
return stack[top--];
} else {
printf("Stack underflow\n");
return -1;
}
}
void display() {
printf("The stack is: ");
for (int i = top; i >= 0; i--) {
printf("%d\t", stack[i]);
}
printf("\n");
}
int isEmpty() {
return top == -1;
}
int peek() {
if (!isEmpty()) {
return stack[top];
} else {
printf("Stack is empty\n");
return -1;
}
}
int main() {
int choice;
while (1) {
printf("1. Push\n2. Pop\n3. Display\n4. Peek\n5. Check if Empty\n6. Exit\n");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter an element: ");
int element;
scanf("%d", &element);
push(element);
break;
case 2:
printf("The top element is: %d\n", pop());
break;
case 3:
display();
break;
case 4:
printf("The top element is: %d\n", peek());
break;
case 5:
if (isEmpty()) {
printf("Stack is empty\n");
} else {
printf("Stack is not empty\n");
}
break;
case 6:
return 0;
default:
printf("Invalid choice.\n");
}
}
}