#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);
}
}