求大家看看,为什么我输什么,它都是不匹配
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef char datatype;
typedef struct{
datatype data[MAXSIZE];
int top;
}seqstack;
void initStack(seqstack *s);
int isEmpty(seqstack *s);
int push(seqstack *s,char x);
char pop(seqstack *s);
int getTop(seqstack *s,char *x);
int Match(char a,char b);
int checkMatch(char str[],seqstack *s);
//初始化
void initStack(seqstack *s){
s->top=-1;
}
//判断是否栈空
int isEmpty(seqstack *s){
if(s->top = -1)
return 1;
else
return 0;
}
//进栈
int push(seqstack *s,char x){
if(s->top==MAXSIZE-1)
return 0;
else{
s->top++;
s->data[s->top]=x;
return 1;
}
}
//出栈
char pop(seqstack *s){
if(s->top==MAXSIZE-1)
return 0;
else{
char e;
e = s->data[s->top];
s->top--;
return e;
}
}
//取栈顶
int getTop(seqstack *s,char *x){
if(isEmpty(s)){
printf("空栈!!");
return 0;
}else{
*x = s->data[s->top];
return 1;
}
}
int checkMatch(char str[],seqstack *s){
char ch;
initStack(s);
for(int i=0;str[i]!='\0';i++){
if(str[i] =='('|| str[i]=='['||str[i]=='{'){
push(s,str[i]);
}
if(str[i] ==')'){
if(isEmpty(s)){
return 0;
}else{
ch = pop(s);
if(ch !='('){
return 0;
}
}
}
if(str[i] ==']'){
if(isEmpty(s))
return 0;
else{
ch=pop(s);
if(ch !='['){
return 0;
}
}
}
if(str[i] =='}'){
if(isEmpty(s))
return 0;
else{
ch=pop(s);
if(ch !='{'){
return 0;
}
}
}
}
if(isEmpty(s))
return 1;
else
return 0;
}
int main(void){
seqstack s;
char str[25];
printf("请输入你要检查的字符串:");
scanf("%s",str);
if(checkMatch(str,&s))
printf("匹配\n");
else
printf("不匹配\n");
return 0;
}
不输括号,就匹配了。。。。。