0% found this document useful (0 votes)
15 views

STACK(C PROGRAM)

Here in this PDF a required program for stack is given for better understanding
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views

STACK(C PROGRAM)

Here in this PDF a required program for stack is given for better understanding
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

#include <stdio.

h>
#include<conio.h>
#include <string.h>
#include <stdlib.h>

#define MAX_N 100

// Static stack implementation


int staticStack[MAX_N];
int staticTop = -1;

// Dynamic stack implementation


struct DynamicStack {
int *data;
int cap;
int top;
};

void initializeDynamicStack(struct DynamicStack *stack, int


cap) {
stack->data = (int *)malloc(cap* sizeof(int));
stack->cap = cap;
stack->top = -1;
}
int isDynamicStackEmpty(struct DynamicStack *stack) {
return stack->top == -1;
}

int isDynamicStackFull(struct DynamicStack *stack) {


return stack->top == stack->cap- 1;
}
void pushDynamic(struct DynamicStack *stack, int value) {
if (isDynamicStackFull(stack)) {
printf("Dynamic Stack Overflow\n");
return;
}
stack->data[++stack->top] = value;
}
int popDynamic(struct DynamicStack *stack) {
if (isDynamicStackEmpty(stack)) {
printf("Dynamic Stack Underflow\n");
return -1;
}
return stack->data[stack->top--];
}
// Function to reverse a string
void reverseString(char *str) {
int length = strlen(str);
for (int i = 0; i < length / 2; i++) {
char temp = str[i];
str[i] = str[length - i - 1];
str[length - i - 1] = temp;
}
}

// Function to check if a number is palindrome


int isPalindrome(int num) {
int originalNum = num;
int reversedNum = 0;
while (num > 0) {
int digit = num % 10;
reversedNum = reversedNum * 10 + digit;
num /= 10;
}
return originalNum == reversedNum;
}
int main() {
int choice;
struct DynamicStack dynamicStack;
initializeDynamicStack(&dynamicStack, MAX_N);
do {
printf("Menu:\n");
printf("1. Push element into Static Stack\n");
printf("2. Pop element from Static Stack\n");
printf("3. Push element into Dynamic Stack\n");
printf("4. Pop element from Dynamic Stack\n");
printf("5. Display Dynamic Stack\n");
printf("6. Reverse a String\n");
printf("7. Check for Palindrome Number\n");
printf("8. Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1: {
int value;
printf("Enter a value to push into Static Stack: ");
scanf("%d", &value);
if (staticTop < MAX_N - 1) {
staticStack[++staticTop] = value;
printf("Element pushed into Static Stack.\n");
}
else {
printf("Static Stack Overflow\n");
}
break;
}
case 2: {
if (staticTop >= 0) {
int poppedValue = staticStack[staticTop--];
printf("Popped element from Static Stack: %d\n",
poppedValue);
}
else {
printf("Static Stack Underflow\n");
}
break;
}
case 3: {
int value;
printf("Enter a value to push into Dynamic Stack: ");
scanf("%d", &value);
pushDynamic(&dynamicStack, value);
printf("Element pushed into Dynamic Stack.\n");
break;
}
case 4: {
if (!isDynamicStackEmpty(&dynamicStack)) {
int poppedValue = popDynamic(&dynamicStack);
printf("Popped element from Dynamic Stack: %d\n",
poppedValue);
}
else {
printf("Dynamic Stack Underflow\n");
}
break;
}
case 5: {
printf("Dynamic Stack contents:\n");
for (int i = dynamicStack.top; i >= 0; i--) {
printf("%d\n", dynamicStack.data[i]);
}
break;
}
case 6: {
char str[100];
printf("Enter a string: ");
scanf(" %99[^\n]", str); // Read up to 99 characters
(excluding newline)
reverseString(str);
printf("Reversed string: %s\n", str);
break;
}
case 7: {
int num;
printf("Enter a number: ");
scanf("%d", &num);
if (isPalindrome(num)) {
printf("%d is a palindrome number.\n", num);
}
else {
printf("%d is not a palindrome number.\n", num);
}
break;
}
case 8: {
printf("Exiting the program.\n");
break;
}
default:
printf("Invalid choice. Please enter a valid option.\n");
}
}
while (choice != 8);
return 0;
}
OUTPUT:

You might also like