#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(" 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("reversed string is %s ",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"); 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+CiNkZWZpbmUgc2l6ZSAxMDAKc3RydWN0IHN0YWNrCnsKICAgIGNoYXIgaXRlbXNbc2l6ZV07CiAgICBpbnQgdG9wOwoKfXM7CmNoYXIgcG9wKCk7CnZvaWQgcHVzaChjaGFyKTsKdm9pZCBkaXNwbGF5KCk7CmludCBpc2Z1bGwoKTsKaW50IGlzZW1wdHkoKTsKaW50IG1haW4oKQp7CiAgICBpbnQgaT0xLGM9MDsKICAgIGNoYXIgc3NbMTAwXSx4OwogICAgcHJpbnRmKCIxLnJldmVyc2UgbGluZSBvZiB0ZXh0IDIucGFsaW5kcm9tZSBjaGVja1xuIik7CiAgICBwcmludGYoImVudGVyIGFueSBvdGhlciBrZXkgdG8gcXVpdFxuIik7CgoKCiAgd2hpbGUoaSE9MCkKICAgewogICAgICAgcHJpbnRmKCJlbnRlciBjaG9pY2UgIik7CiAgICAgICBzY2FuZigiJWQiLCZpKTsKCiAgICAgc3dpdGNoKGkpCiAgICAgewogICAgICAgICBjYXNlIDE6cHJpbnRmKCIgZW50ZXIgc3RyaW5nIHRvIHJldmVyc2UgIik7CiAgICAgICAgICAgICAgICBzY2FuZigiJXMiLHNzKTsKICAgICAgICAgICAgICAgYz0wOwogICAgICAgICBmb3IoaT0wO2k8c3RybGVuKHNzKTtpKyspCiAgICAgICAgIHsKICAgICAgICAgICAgIHB1c2goc3NbaV0pOwoKICAgICAgICAgfQogICAgICAgICBmb3IoaT1zLnRvcDtpPj0wO2ktLSkKICAgICAgICAgewoKICAgICAgICAgICAgIHNzW2MrK109cy5pdGVtc1tpXTsKICAgICAgICAgICAgIHBvcCgpOwogICAgICAgICB9CiAgICAgICAgIHNzW2NdPSdcMCc7CiAgICAgICAgIHByaW50ZigicmV2ZXJzZWQgc3RyaW5nIGlzICVzICIsc3MpOwogICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAyOiBwcmludGYoImVudGVyIHN0cmluZyB0byBiZSBjaGVja2VkIGZvciBwYWxpbmRyb21lXG4iKTsKICAgICAgICAgICAgICAgICBzY2FuZigiJXMiLHNzKTsKICAgICAgICAgICAgICAgICBpZihzdHJsZW4oc3MpJTI9PTApYz1zdHJsZW4oc3MpLzI7CiAgICAgICAgICAgICAgICAgZWxzZSBjPXN0cmxlbihzcykvMisxOwogICAgICAgICAgICAgICAgIGZvcihpPTA7aTxzdHJsZW4oc3MpLzI7aSsrKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChzc1tpXSk7CgogICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgZm9yKGk9YztpPHN0cmxlbihzcyk7aSsrKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaWYoc3NbaV09PXMuaXRlbXNbcy50b3BdKQogICAgICAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAgeD1wb3AoKTsKCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICBpZihpPT1zdHJsZW4oc3MpKXByaW50ZigicGFsaW5kcm9tZSIpOwogICAgICAgICAgICAgICAgIGVsc2UgcHJpbnRmKCJub3QgcGFsaW5kcm9tZSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGRlZmF1bHQ6aT0wOwoKICAgICB9CiAgIH0KCn0KaW50IGlzZnVsbCgpCnsKCiAgICByZXR1cm4gcy50b3A9PXNpemUtMTsKfQppbnQgaXNlbXB0eSgpCnsKCiAgICByZXR1cm4gcy50b3A9PS0xOwp9CmNoYXIgcG9wKCkKewogICAgY2hhciB4OwogICAgaWYoaXNlbXB0eSgpKXByaW50ZigiY2FudCBwb3AgYXMgc3RhY2sgZW1wdHlcbiIpOwogICAgZWxzZQogICAgewogICAgICAgIHg9cy5pdGVtc1tzLnRvcF07CiAgICAgICAgcy50b3AtLTsKICAgICAgICByZXR1cm4geDsKICAgIH0KCn0Kdm9pZCBwdXNoKGNoYXIgeCkKewogICAgaWYoaXNmdWxsKCkpcHJpbnRmKCJjYW50IHB1c2ggYXMgc3RhY2sgZnVsbFxuIik7CiAgICBlbHNlCiAgICB7CiAgICAgICAgcy5pdGVtc1srK3MudG9wXT14OwoKCiAgICB9Cgp9CiAgICB2b2lkIGRpc3BsYXkoKQogICAgewogICAgICAgIGludCBpOwogICAgICAgIGlmKGlzZW1wdHkoKSlwcmludGYoImNhbnQgZGlzcGxheSBhcyBzdGFjayBlbXB0eVxuIik7CiAgICAgICAgZWxzZQogICAgICAgIHsKCiAgICAgICAgICAgIGZvcihpPXMudG9wO2k+PTA7aS0tKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgcHJpbnRmKCIlYyAiLHMuaXRlbXNbaV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgIH0K