编辑代码

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