#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("\nenter 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("\nreversed 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+CiNkZWZpbmUgc2l6ZSAxMDAKc3RydWN0IHN0YWNrCnsKICAgIGNoYXIgaXRlbXNbc2l6ZV07CiAgICBpbnQgdG9wOwoKfXM7CmNoYXIgcG9wKCk7CnZvaWQgcHVzaChjaGFyKTsKdm9pZCBkaXNwbGF5KCk7CmludCBpc2Z1bGwoKTsKaW50IGlzZW1wdHkoKTsKaW50IG1haW4oKQp7CiAgICBpbnQgaT0xLGM9MDsKICAgIGNoYXIgc3NbMTAwXSx4OwogICAgcHJpbnRmKCIxLnJldmVyc2UgbGluZSBvZiB0ZXh0IDIucGFsaW5kcm9tZSBjaGVja1xuIik7CiAgICBwcmludGYoImVudGVyIGFueSBvdGhlciBrZXkgdG8gcXVpdFxuIik7CgoKCiAgd2hpbGUoaSE9MCkKICAgewogICAgICAgcHJpbnRmKCJlbnRlciBjaG9pY2UgIik7CiAgICAgICBzY2FuZigiJWQiLCZpKTsKCiAgICAgc3dpdGNoKGkpCiAgICAgewogICAgICAgICBjYXNlIDE6Ly9wcmludGYoIlxuZW50ZXIgc3RyaW5nIHRvIHJldmVyc2UgIik7CiAgICAgICAgICAgICAgICBzY2FuZigiJVteXG5dcyIsc3MpOwogICAgICAgICAgICAgICBjPTA7CiAgICAgICAgIGZvcihpPTA7aTxzdHJsZW4oc3MpO2krKykKICAgICAgICAgewogICAgICAgICAgICAgcHVzaChzc1tpXSk7CgogICAgICAgICB9CiAgICAgICAgIGZvcihpPXMudG9wO2k+PTA7aS0tKQogICAgICAgICB7CgogICAgICAgICAgICAgc3NbYysrXT1zLml0ZW1zW2ldOwogICAgICAgICAgICAgcG9wKCk7CiAgICAgICAgIH0KICAgICAgICAgc3NbY109J1wwJzsKICAgICAgICAgcHJpbnRmKCJcbnJldmVyc2VkIHN0cmluZyBpcyAlc1xuIixzcyk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDI6IHByaW50ZigiZW50ZXIgc3RyaW5nIHRvIGJlIGNoZWNrZWQgZm9yIHBhbGluZHJvbWVcbiIpOwogICAgICAgICAgICAgICAgIHNjYW5mKCIlW15cbl1zIixzcyk7CiAgICAgICAgICAgICAgICAgaWYoc3RybGVuKHNzKSUyPT0wKWM9c3RybGVuKHNzKS8yOwogICAgICAgICAgICAgICAgIGVsc2UgYz1zdHJsZW4oc3MpLzIrMTsKICAgICAgICAgICAgICAgICBmb3IoaT0wO2k8c3RybGVuKHNzKS8yO2krKykKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goc3NbaV0pOwoKICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIGZvcihpPWM7aTxzdHJsZW4oc3MpO2krKykKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGlmKHNzW2ldPT1zLml0ZW1zW3MudG9wXSkKICAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgIHg9cG9wKCk7CgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgaWYoaT09c3RybGVuKHNzKSlwcmludGYoInBhbGluZHJvbWVcbiIpOwogICAgICAgICAgICAgICAgIGVsc2UgcHJpbnRmKCJub3QgcGFsaW5kcm9tZVxuIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgZGVmYXVsdDppPTA7CgogICAgIH0KICAgfQoKfQppbnQgaXNmdWxsKCkKewoKICAgIHJldHVybiBzLnRvcD09c2l6ZS0xOwp9CmludCBpc2VtcHR5KCkKewoKICAgIHJldHVybiBzLnRvcD09LTE7Cn0KY2hhciBwb3AoKQp7CiAgICBjaGFyIHg7CiAgICBpZihpc2VtcHR5KCkpcHJpbnRmKCJjYW50IHBvcCBhcyBzdGFjayBlbXB0eVxuIik7CiAgICBlbHNlCiAgICB7CiAgICAgICAgeD1zLml0ZW1zW3MudG9wXTsKICAgICAgICBzLnRvcC0tOwogICAgICAgIHJldHVybiB4OwogICAgfQoKfQp2b2lkIHB1c2goY2hhciB4KQp7CiAgICBpZihpc2Z1bGwoKSlwcmludGYoImNhbnQgcHVzaCBhcyBzdGFjayBmdWxsXG4iKTsKICAgIGVsc2UKICAgIHsKICAgICAgICBzLml0ZW1zWysrcy50b3BdPXg7CgoKICAgIH0KCn0KICAgIHZvaWQgZGlzcGxheSgpCiAgICB7CiAgICAgICAgaW50IGk7CiAgICAgICAgaWYoaXNlbXB0eSgpKXByaW50ZigiY2FudCBkaXNwbGF5IGFzIHN0YWNrIGVtcHR5XG4iKTsKICAgICAgICBlbHNlCiAgICAgICAgewoKICAgICAgICAgICAgZm9yKGk9cy50b3A7aT49MDtpLS0pCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBwcmludGYoIiVjICIscy5pdGVtc1tpXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfQoK