只作为代码的保存
void Check()
{
SqStack S2;
char ch[80];
char *p;
char e;
InitStack(S2);
cout<<"请输入需要括号检验的表达式 :"<<endl;
gets(ch);
p = ch; //p指向字符串的首字符
while(*p ) //没有到串未
switch(*p)
{
case '(':
case '[':
case '{':
Push(S2,(int)*p++); //左括号入栈,且p++
break;
case ')':
case ']':
case '}':
if( !StackEmpty(S2) ) //栈不空
{
Pop(S2,e);
if( !((e=='('&&*p==')') || (e=='['&&*p==']') || (e=='{'&& *p == '}')))
{//出现这3种情况之外的情况
cout<<"左右括号不匹配\n";
exit(-2);
}
}
else
{
cout<<"缺乏左括号\n";
exit(-2);
}
default: p++; //其他字符不处理
}
if(StackEmpty(S2))
cout<<"括号匹配!\n";
else
cout<<"缺乏右括号!\n";
//DestroyStack(S2);
}