/*
The strings where the reading from the reverse and forward directions give the same word are called
a palindrome.
For example, -> the string ”radar” is an example for palindrome.
Among many other techniques stack can be used to determine if a string is a palindrome or not.
This is achieved by pushing all the letters of a given word into stack and checking if the letters popped are the same as the letter of the string.
*/
#include<stdio.h>
#include<conio.h>
#define STACKSIZE 25
typedef struct
{
int count;
int top;
char items[STACKSIZE];/*stack can contain up to 20 characters*/
}STACK;
void push(STACK *, int);
char pop(STACK *);
Sptr->count--;
}
return pp;
}
int main()
{
int i, check=0, size;
STACK s;
char p, A[20];
s.count=0;
s.top = -1; /*indicates that the stack is empty at the beginning*/
printf("Enter the string\n");
gets(A); /* alternatively you can use scanf("%s",A); */
/*pushing the characters of the string into the stack*/
for(i=0; A[i]!='\0';i++){
p = A[i];
push(&s,p);
}
size = s.count;
/*popping and checking if the letters are equal in rev. & forw.direction*/
for(i=0;i<=size-1;i++){
p=pop(&s);
if(p != A[i])
check ++;
}
if(check == 0)
printf("\nThe string %s is a palindrome\n",A);
else
printf("\nThe string %s is NOT a palindrome\n",A);
return 0;
}
void push(STACK *Sptr, int ps) /*pushes ps into stack*/
{
if(Sptr->top == STACKSIZE-1){
printf("Stack is full\n");
exit(1); /*exit from the function*/
}
else {
Sptr->top++;
Sptr->count++;
Sptr->items[Sptr->top]= ps;
}
}
char pop(STACK *Sptr)
{
char pp;
if(Sptr->top == -1){
printf("Stack is empty\n");
exit(1); /*exit from the function*/
}
else {
pp = Sptr->items[Sptr->top];
Sptr->top--;
Sptr->count--;
}
return pp;
}
The strings where the reading from the reverse and forward directions give the same word are called
a palindrome.
For example, -> the string ”radar” is an example for palindrome.
Among many other techniques stack can be used to determine if a string is a palindrome or not.
This is achieved by pushing all the letters of a given word into stack and checking if the letters popped are the same as the letter of the string.
*/
#include<stdio.h>
#include<conio.h>
#define STACKSIZE 25
typedef struct
{
int count;
int top;
char items[STACKSIZE];/*stack can contain up to 20 characters*/
}STACK;
void push(STACK *, int);
char pop(STACK *);
Sptr->count--;
}
return pp;
}
int main()
{
int i, check=0, size;
STACK s;
char p, A[20];
s.count=0;
s.top = -1; /*indicates that the stack is empty at the beginning*/
printf("Enter the string\n");
gets(A); /* alternatively you can use scanf("%s",A); */
/*pushing the characters of the string into the stack*/
for(i=0; A[i]!='\0';i++){
p = A[i];
push(&s,p);
}
size = s.count;
/*popping and checking if the letters are equal in rev. & forw.direction*/
for(i=0;i<=size-1;i++){
p=pop(&s);
if(p != A[i])
check ++;
}
if(check == 0)
printf("\nThe string %s is a palindrome\n",A);
else
printf("\nThe string %s is NOT a palindrome\n",A);
return 0;
}
void push(STACK *Sptr, int ps) /*pushes ps into stack*/
{
if(Sptr->top == STACKSIZE-1){
printf("Stack is full\n");
exit(1); /*exit from the function*/
}
else {
Sptr->top++;
Sptr->count++;
Sptr->items[Sptr->top]= ps;
}
}
char pop(STACK *Sptr)
{
char pp;
if(Sptr->top == -1){
printf("Stack is empty\n");
exit(1); /*exit from the function*/
}
else {
pp = Sptr->items[Sptr->top];
Sptr->top--;
Sptr->count--;
}
return pp;
}