In: Computer Science
In c++, using stack structure, write a program that will take a sequence of characters (string) and determine whether it is a palindrome. Use the linked version of the stack.
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char
* stack;
int
top = -1;
// push function
void
push(
char
ele)
{
stack[++top] =
ele;
}
// pop function
char
pop()
{
return
stack[top--];
}
// Function that returns 1
// if str is a palindrome
int
isPalindrome(
char
str[])
{
int
length =
strlen
(str);
// Allocating the
memory for the stack
stack =
(
char
*)
malloc
(length
*
sizeof
(
char
));
// Finding the
mid
int
i,
mid = length / 2;
for
(i =
0; i < mid; i++) {
push(str[i]);
}
// Checking if the
length of the string
// is odd, if odd
then neglect the
// middle
character
if
(length % 2 != 0) {
i++;
}
// While not the end
of the string
while
(str[i] !=
'\0'
) {
char
ele = pop();
//
If the characters differ then the
//
given string is not a palindrome
if
(ele != str[i])
return
0;
i++;
}
return
1;
}
// Driver code
int
main()
{
char
str[] =
"madam"
;
if
(isPalindrome(str)) {
printf
(
"Yes"
);
}
else
{
printf
(
"No"
);
}
return
0;
}