用栈实现括号匹配问题

求帮助,程序没有输出信息怎么回事?
#include #include typedef char DataType;#define STACKSIZE 5typedef struct { DataType data[STACKSIZE]; int top;}SeqStack;//初始化为空栈 void InitStack(SeqStack *s){ s->top=-1 ; //置空栈 }//判断栈s是否为空,为空返回1,否则返回0 int StackEmpty(SeqStack *s){ if (s->top==-1) return 1; else return 0; }//将元素x压入栈s中,正常入栈返回1,否则返回0 int Push(SeqStack *s, DataType x){ if (s->top==STACKSIZE-1) //栈满,不能入栈 { printf("栈已满!\n"); return 0; //入栈失败 } else { s->top++; //栈顶位置加1 s->data[s->top]=x; //x入栈 return 1; //入栈成功 }}//将栈s的栈顶出栈,并通过指针变量x将顶栈元素返回,正常出栈返回1,否则返回0 int Pop(SeqStack *s, DataType *x){ if (s->top==-1) { printf("栈已空!\n"); return 0; //栈空,不能出栈 } else { x=s->data[s->top]; //栈顶元素保存在x中 s->top--; //栈顶位置减1 return 1; //出栈成功 }}//读取栈顶元素,并通过参数x返回其值int GetTop(SeqStack *s, DataType *x){ if (s->top==-1) { printf("栈已空!\n"); return 0; //栈空,读取失败 } else { x=s->data[s->top]; //栈顶元素保存在x中,此时栈顶并不出栈 return 1; //读取成功 }}int Match(char *str) { char *x; int i=0; SeqStack *L; InitStack(L); while(str[i]!='\0') { if(str[i]=='('||str[i]=='['||str[i]=='{') { Push(L,str[i]); } else { if(str[i]==')'&&GetTop(L, x)=='(') { Pop(L,x); } else if(str[i]==']'&&GetTop(L, x)=='[') { Pop(L,x); } else if(str[i]=='}'&&GetTop(L, x)=='{') { Pop(L,x); } } i++; } return StackEmpty(L);}int main(){ int t; char str[100]; gets(str); t=Match(str); printf("%d\n",t); return 0;}


你给我翻译翻译,这么发出来是什么意思??

仅供参考:

#include<stdio.h>
#include<malloc.h>
#include<string.h>
#define STACK_INIT_SIZE 10
#define STACK_GROW_SIZE 5
#define ELEMTYPE char
#define OK 1
#define ERROR 0
typedef struct { /*建立一个栈的首结点*/
    ELEMTYPE * base;
    ELEMTYPE * top;
    int stacksize;
} SpStack;
int InitStack(SpStack *s) { /*建立空的栈并返回首地址*/
    s->base=((ELEMTYPE*)malloc(STACK_INIT_SIZE*sizeof(ELEMTYPE)));
    if (!s->base) return ERROR;
    s->top=s->base;
    s->stacksize=STACK_INIT_SIZE;
    return OK;
}
int StackEmpty(SpStack *s) { /*判断栈是否为空*/
    if (s->top==s->base) return OK;
    else                 return ERROR;
}
int Push(SpStack *s,ELEMTYPE e) { /*往栈顶插入元素即进栈*/
    if (s->top-s->base>=s->stacksize) { /*判断是否栈满*/
        s->base=((ELEMTYPE*)realloc(s->base,(s->stacksize+STACK_GROW_SIZE)*sizeof(ELEMTYPE)));
        if (!s->base) return ERROR;
        s->stacksize+=STACK_GROW_SIZE;
        s->top=s->base+s->stacksize;
    }
    *s->top++=e;
    return OK;
}
int Pop(SpStack *s,ELEMTYPE *e) { /*让栈顶元素依次输出即出栈*/
    if (StackEmpty(s)) return ERROR;
    *e=*(--s->top);
    return OK;
}
int Comp(ELEMTYPE a,ELEMTYPE b) {
    if ((a=='('&&b!=')')
      ||(a=='['&&b!=']')
      ||(a=='{'&&b!='}')) {
        return ERROR;
    } else return OK;
}
int Count(SpStack *s) {
    ELEMTYPE e[STACK_INIT_SIZE*2];
    ELEMTYPE e1;
    int i;

    InitStack(s);
    fgets(e,STACK_INIT_SIZE*2,stdin);
    if ('\n'==e[strlen(e)-1]) e[strlen(e)-1]=0;
    printf("%s\n",e);
    for (i=0;e[i]!='\0';i++) {
        switch (e[i]) {
        case '(':
        case '[':
        case '{':
            Push(s,e[i]);
            break;
        case ')':
        case ']':
        case '}':
            if (StackEmpty(s)) {
                printf("%*s↖右括号多余\n",i+1,"");
                return(ERROR);
            } else Pop(s,&e1);
            if (!Comp(e1,e[i])) {
                printf("%*s↖左右匹配出错\n",i+1,"");
                return(ERROR);
            }
        }
    }
    if (!StackEmpty(s)) {
        printf("%*s↖左括号多余\n",i,"");
        return(ERROR);
    } else {
        printf("匹配正确\n");
        return(OK);
    }
}
void main() {
    SpStack s;
    Count(&s);
    free(s.base);
}