#include<stdio.h>
#include<string.h>
#define size 100
struct stack
{
char items[ size] ;
int top;
} s;
char pop( ) ;
void push( char ) ;
void display( ) ;
int isfull( ) ;
int isempty( ) ;
int main( )
{
int i= 1 , c= 0 ;
char ss[ 100 ] , x;
printf ( "1.reverse line of text 2.palindrome check\n " ) ; printf ( "enter any other key to quit\n " ) ;
while ( i!= 0 )
{
switch ( i)
{
case 1 : printf ( "\n enter string to reverse " ) ; c= 0 ;
{
push( ss[ i] ) ;
}
for ( i= s.top ; i>= 0 ; i-- )
{
ss[ c++ ] = s.items [ i] ;
pop( ) ;
}
ss[ c] = '\0 ' ;
printf ( "\n reversed string is %s\n " , ss
) ; break ;
case 2 : printf ( "enter string to be checked for palindrome\n " ) ; {
push( ss[ i] ) ;
}
{
if ( ss[ i] == s.items [ s.top ] )
{
x= pop( ) ;
}
else break ;
}
else printf ( "not palindrome\n " ) ; break ;
default : i= 0 ;
}
}
}
int isfull( )
{
return s.top == size- 1 ;
}
int isempty( )
{
return s.top ==- 1 ;
}
char pop( )
{
char x;
if ( isempty
( ) ) printf ( "cant pop as stack empty\n " ) ; else
{
x= s.items [ s.top ] ;
s.top --;
return x;
}
}
void push( char x)
{
if ( isfull
( ) ) printf ( "cant push as stack full\n " ) ; else
{
s.items [ ++ s.top ] = x;
}
}
void display( )
{
int i;
if ( isempty
( ) ) printf ( "cant display as stack empty\n " ) ; else
{
for ( i= s.top ; i>= 0 ; i-- )
{
}
}
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RyaW5nLmg+CiNkZWZpbmUgc2l6ZSAxMDAKc3RydWN0IHN0YWNrCnsKICAgIGNoYXIgaXRlbXNbc2l6ZV07CiAgICBpbnQgdG9wOwoKfXM7CmNoYXIgcG9wKCk7CnZvaWQgcHVzaChjaGFyKTsKdm9pZCBkaXNwbGF5KCk7CmludCBpc2Z1bGwoKTsKaW50IGlzZW1wdHkoKTsKaW50IG1haW4oKQp7CiAgICBpbnQgaT0xLGM9MDsKICAgIGNoYXIgc3NbMTAwXSx4OwogICAgcHJpbnRmKCIxLnJldmVyc2UgbGluZSBvZiB0ZXh0IDIucGFsaW5kcm9tZSBjaGVja1xuIik7CiAgICBwcmludGYoImVudGVyIGFueSBvdGhlciBrZXkgdG8gcXVpdFxuIik7CgoKCiAgd2hpbGUoaSE9MCkKICAgewogICAgICAgcHJpbnRmKCJlbnRlciBjaG9pY2UgIik7CiAgICAgICBzY2FuZigiJWQiLCZpKTsKCiAgICAgc3dpdGNoKGkpCiAgICAgewogICAgICAgICBjYXNlIDE6cHJpbnRmKCJcbmVudGVyIHN0cmluZyB0byByZXZlcnNlICIpOwogICAgICAgICAgICAgICAgc2NhbmYoIiVbXlxuXXMiLHNzKTsKICAgICAgICAgICAgICAgYz0wOwogICAgICAgICBmb3IoaT0wO2k8c3RybGVuKHNzKTtpKyspCiAgICAgICAgIHsKICAgICAgICAgICAgIHB1c2goc3NbaV0pOwoKICAgICAgICAgfQogICAgICAgICBmb3IoaT1zLnRvcDtpPj0wO2ktLSkKICAgICAgICAgewoKICAgICAgICAgICAgIHNzW2MrK109cy5pdGVtc1tpXTsKICAgICAgICAgICAgIHBvcCgpOwogICAgICAgICB9CiAgICAgICAgIHNzW2NdPSdcMCc7CiAgICAgICAgIHByaW50ZigiXG5yZXZlcnNlZCBzdHJpbmcgaXMgJXNcbiIsc3MpOwogICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAyOiBwcmludGYoImVudGVyIHN0cmluZyB0byBiZSBjaGVja2VkIGZvciBwYWxpbmRyb21lXG4iKTsKICAgICAgICAgICAgICAgICBzY2FuZigiJVteXG5dcyIsc3MpOwogICAgICAgICAgICAgICAgIGlmKHN0cmxlbihzcyklMj09MCljPXN0cmxlbihzcykvMjsKICAgICAgICAgICAgICAgICBlbHNlIGM9c3RybGVuKHNzKS8yKzE7CiAgICAgICAgICAgICAgICAgZm9yKGk9MDtpPHN0cmxlbihzcykvMjtpKyspCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBwdXNoKHNzW2ldKTsKCiAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICBmb3IoaT1jO2k8c3RybGVuKHNzKTtpKyspCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBpZihzc1tpXT09cy5pdGVtc1tzLnRvcF0pCiAgICAgICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICB4PXBvcCgpOwoKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBicmVhazsKICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIGlmKGk9PXN0cmxlbihzcykpcHJpbnRmKCJwYWxpbmRyb21lXG4iKTsKICAgICAgICAgICAgICAgICBlbHNlIHByaW50Zigibm90IHBhbGluZHJvbWVcbiIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGRlZmF1bHQ6aT0wOwoKICAgICB9CiAgIH0KCn0KaW50IGlzZnVsbCgpCnsKCiAgICByZXR1cm4gcy50b3A9PXNpemUtMTsKfQppbnQgaXNlbXB0eSgpCnsKCiAgICByZXR1cm4gcy50b3A9PS0xOwp9CmNoYXIgcG9wKCkKewogICAgY2hhciB4OwogICAgaWYoaXNlbXB0eSgpKXByaW50ZigiY2FudCBwb3AgYXMgc3RhY2sgZW1wdHlcbiIpOwogICAgZWxzZQogICAgewogICAgICAgIHg9cy5pdGVtc1tzLnRvcF07CiAgICAgICAgcy50b3AtLTsKICAgICAgICByZXR1cm4geDsKICAgIH0KCn0Kdm9pZCBwdXNoKGNoYXIgeCkKewogICAgaWYoaXNmdWxsKCkpcHJpbnRmKCJjYW50IHB1c2ggYXMgc3RhY2sgZnVsbFxuIik7CiAgICBlbHNlCiAgICB7CiAgICAgICAgcy5pdGVtc1srK3MudG9wXT14OwoKCiAgICB9Cgp9CiAgICB2b2lkIGRpc3BsYXkoKQogICAgewogICAgICAgIGludCBpOwogICAgICAgIGlmKGlzZW1wdHkoKSlwcmludGYoImNhbnQgZGlzcGxheSBhcyBzdGFjayBlbXB0eVxuIik7CiAgICAgICAgZWxzZQogICAgICAgIHsKCiAgICAgICAgICAgIGZvcihpPXMudG9wO2k+PTA7aS0tKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgcHJpbnRmKCIlYyAiLHMuaXRlbXNbaV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgIH0K