Implementing Stack in C
Implementing Stack in C
#include <stdio.h>
#include <stdbool.h>
// Function prototypes
void initStack();
bool isEmpty();
bool isFull();
void push(int value);
int pop();
int peek();
void printStack();
void menu();
void initStack() {
top = -1; // Set top to -1 indicating an empty stack
}
bool isEmpty() {
return top == -1;
}
bool isFull() {
return top == MAX - 1;
}
int pop() {
if (isEmpty()) {
printf("Stack underflow\n");
return -1; // Return -1 to indicate stack is empty
}
return stack[top--]; // Return the top element and decrement top
}
int peek() {
if (isEmpty()) {
printf("Stack is empty\n");
return -1; // Return -1 to indicate stack is empty
}
return stack[top]; // Return the top element
}
void printStack() {
if (isEmpty()) {
printf("Stack is empty\n");
return;
}
printf("Stack elements are:\n");
for (int i = top; i >= 0; i--) {
printf("%d\n", stack[i]);
}
}
void menu() {
int choice, value;
while (1) {
printf("\nStack Operations Menu:\n");
printf("1. Push\n");
printf("2. Pop\n");
printf("3. Peek\n");
printf("4. Display\n");
printf("5. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter the value to push: ");
scanf("%d", &value);
push(value);
break;
case 2:
value = pop();
if (value != -1) {
printf("%d popped from stack\n", value);
}
break;
case 3:
value = peek();
if (value != -1) {
printf("Top element is %d\n", value);
}
break;
case 4:
printStack();
break;
case 5:
printf("Exiting...\n");
return;
default:
printf("Invalid choice, please try again.\n");
}
}
}
int main() {
initStack();
menu();
return 0;
}
int main() {
struct Stack stack;
initialize(&stack);
int choice, data;
while (1) {
printf("\n1. Push\n2. Pop\n3. Peek\n4. Display\n5. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter data to push: ");
scanf("%d", &data);
push(&stack, data);
break;
case 2:
data = pop(&stack);
printf("%d popped from stack\n", data);
break;
case 3:
data = peek(&stack);
printf("Top element: %d\n", data);
break;
case 4:
display(&stack);
break;
case 5:
exit(0);
default:
printf("Invalid choice\n");
}
}
return 0;
}