#include <stdio.h>
#include <stdlib.h>
#define MAX 100
typedef struct{
char *base;
int top;
}SqStack;
void InitStack (SqStack &s){
s.base = (char *)malloc(MAX * sizeof(char));
if(!s.base )
return ;
s.top = 0;
}
int Tran (SqStack s, char *str){
char *p = str, ch;
if(*p == ')' || *p == ']' || *p == '}')
return 0;
while(*p){
if(*p == '(' || *p == '[' || *p == '{')
s.base[s.top ++] = *p;
if(*p == ')' || *p == ']' || *p == '}'){
ch = s.base[-- s.top];
if(*p == ')' && ch != '(' )
return 0;
if(*p == ']' && ch != '[')
return 0;
if(*p == '}' && ch != '{')
return 0;
}
p ++;
}
if(s.top )
return 0;
return 1;
}
int main()
{
SqStack s;
char str[MAX];
scanf("%s",str);
InitStack(s);
if(Tran(s,str))
printf("Maching!");
else
printf("No Maching!");
return 0;
}
括号匹配
最新推荐文章于 2021-01-21 12:44:33 发布