#define datatype char
typedef struct Stacknode
{
datatype data;
struct Stacknode *next;
}LINKSTACK;
LINKSTACK *top;
void Init_Stack(LINKSTACK **p)
{
*top=NULL;
}
int Stack_Empty(LINKSTACK *top)
{
if(top==NULL)
return 1;
else
return 0;
}
void Push_Stack(LINKSTACK **top,datatype x)
{
LINKSTACK *p;
p=(LINKSTACK *)malloc(sizeof(LINKSTACK));
p->data=x;
p->next=*top;
*top=p;
}
datatype Gettop_Stack(LINKSTACK *top)
{
datatype x;
if (top=NULL)
x=NULL;
else
x=top->data;
return x;
}
datatype Pop_Stack(LINKSTACK **top)
{
datatype x;
LINKSTACK *p;
if(*top=NULL)
{
printf("Stack empty\n");
x=NULL;
}
else
{
x=(*top)->data;
p=*top;
*top=(*top)->next;
free(p);
}
return x;
}
main()
{
LINKSTACK *top;
char ch;
Init_Stack(&top);
scanf("%c",&ch);
while(ch!='\n')
{
Push_Stack(&top,ch);
scanf("%c",&ch);
}
while(!Stack_Empty(top))
{
ch=Gettop_Stack(top);
printf("%c",&ch);
Pop_Stack(&top);
}
}