匹配括号是否是合法配对(很好的思路,为啥我就想不到呢)
#include <stdio.h>//出栈
int pop(char * a,int top){
if (top==-1) {
return -1;
}
top--;
return top;
}
//入栈
int push(char* a,int top,char data)
{
a[++top]=data;
return top;
}
int main()
{
char s={'\0'};
int top=-1;
char *a="(((())))[]([()()[]])";
int flag=0;
while(*a!='\0')
{
if(*a=='(' || *a=='[')
{
top=push(s, top, *a);
}
if(*a==')')
{
if('('==s)
{
top=pop(s,top);
}
else
{
flag=1;
break;
}
}
if(*a==']')
{
if('['==s)
{
top=pop(s,top);
}
else
{
flag=1;
break;
}
}
++a;
}
if (flag || top>=0)
{
printf("表达式非法\n");
}
else
{
printf("恭喜,通过测试\n");
}
return 0;
}
页:
[1]