为什么一直显示s没有初始化。
#include<stdio.h>
#include<stdlib.h>
#define Stack_Init_Size 100
#define StackInCrement 10
#define OK 1
#define OVERFLOW -2
#define ERROR 0
typedef char SElemType;
typedef int status;
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
status InitStack(SqStack s){//建立栈
s.base=(SElemType *)malloc(sizeof(SElemType)*Stack_Init_Size);
if(!s.base) exit(OVERFLOW);
s.top=s.top;
s.stacksize=Stack_Init_Size;
return OK;
}
status Push(SqStack s,SElemType e){//元素进栈
if(s.top-s.base>=s.stacksize){
s.base=(SElemType *)realloc(s.base,(Stack_Init_Size+s.stacksize)*sizeof(SElemType));
if(!s.base) exit(OVERFLOW);
s.top=s.base+s.stacksize;
s.stacksize=Stack_Init_Size+s.stacksize;
}
*s.top++=e;
return OK;
}
status Pop(SqStack s){//出栈
SElemType e;
if(s.top==s.base) return ERROR;
e=*--s.top;
return OK;
}
void April(SqStack s){//判断括号问题
char c;
printf("请输入字符串:");
while((c=getchar())!='\n'){
if(c=='{'||c=='['||c=='(') Push(s,c);
else if(c=='}'){
if((s.top-1)=='{') Pop(s);
else{
printf("Match False!");
exit(0);
}
}
else if(c==']'){
if((s.top-1)=='[') Pop(s);
else{
printf("Match False!");
exit(0);
}
}
else if(c==')'){
if(*(s.top-1)=='(') Pop(s);
else{
printf("Match False!");
exit(0);
}
}
}
if(s.base==s.top) printf("Match succed!");
else printf("Match succeed!");
}
int main(){
SqStack s;
InitStack(s);
April(s);
return 0;
}