编辑代码

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

int 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", Stacklength(s));
    while (!Stack_Empty(s)) {
        ch = *(Gettop_Stack(s));
        printf("%c", ch);
        Pop_stack(s);
    }
    return 0;
}