#include <stdio.h>
#define datatype char
#define MAXSIZE 100
typedef struct
{
datatype data[MAXSIZE];
int top;
}SEQSTACK ;
SEQSTACK *s;
void init_Stack(SEQSTACK *s)
{
s->top= -1;
}
int Stack_Empty (SEQSTACK *s)
{
if (s->top==-1)
return 1;
else
return 0;
}
void Push_Stack(SEQSTACK *s,datatype x)
{
if (s->top==MAXSIZE-1)
printf("Stack full\n");
else
{
s->top++;
s->data[s->top]=x;
}
}
datatype Gettop_Stack(SEQSTACK *s)
{
datatype x;
if(Stack_Empty (s))
{
printf("Stack empty.\n")
x=NULL;
}
else
x=s->data[s->top];
return x;
}
datatype Pop_Stack(SEQSTACK *s)
{
datatype x;
if(Stack_Empty (s))
{
printf("Stack empty\n");
x=NULL;
}
else
{
x=s->data[s->top];
s->top--;
}
return x;
}
void Clear_Stack(SEQSTACK *s)
{
s->top= -1;
}
int StackLength(SEQSTACK *s)
{
return s->top+1;
}
main()
{
SEQSTACK Stack,*s;
char ch;
s=&stack;
Init_Stack(s);
scanf("%c",&ch);
while(ch!='\n')
{
Push_Stack(s,ch);
scanf("%c",&ch);
}
printf("%d\n",StackLength(s) );
while(!Stack_Empty(s))
{
ch=Gettop_Stack(s);
printf("%c",ch);
Pop_Stack(s);
}
}