#include <stdio.h>
#include <string.h>
#define MAX 100
// Stack structure
typedef struct {
char data[MAX];
int top;
} Stack;
// Initialize stack
void init(Stack *s) {
s->top = -1;
}
// Check if stack is empty
int isEmpty(Stack *s) {
return s->top == -1;
}
// Check if stack is full
int isFull(Stack *s) {
return s->top == MAX - 1;
}
// Push element to stack
void push(Stack *s, char ch) {
if (isFull(s)) {
printf("Stack is full.\n");
return;
}
s->data[++(s->top)] = ch;
}
// Pop element from stack
char pop(Stack *s) {
if (isEmpty(s)) {
printf("Stack is empty.\n");
return '\0';
}
return s->data[(s->top)--];
}
// Check symmetry using stack
void checkSymmetry(char str[]) {
Stack s;
init(&s);
int len = strlen(str);
int i;
// Push first half to stack
for (i = 0; i < len / 2; i++) {
push(&s, str[i]);
}
// If length is odd, skip middle character
if (len % 2 != 0) {
i++;
}
// Compare second half with stack
while (str[i] != '\0') {
char ch = pop(&s);
if (ch != str[i]) {
printf("The string '%s' is NOT symmetric.\n", str);
return;
}
i++;
}
printf("The string '%s' is symmetric.\n", str);
}
int main() {
char str1[MAX];
printf("Enter a string to check symmetry: ");
scanf("%s", str1);
checkSymmetry(str1);
return 0;
}
Output:
Comments
Post a Comment