//括号匹配的检验
#include <iostream>
using namespace std;
class ADTStack
{
char data[100];
int length;
public:
ADTStack()
{
length=0;
}
void push(char e)
{
data[length]=e;
length++;
}
int pop()
{
--length;
return (data [length]);
}
int empty()
{
if(length==0)
return 1;
else return 0;
}
};
void main()
{
ADTStack stack;
cout<<"input string:"<<endl;
char sign;
int state=0;
do
{
cin.get(sign);
switch (sign)
{
case'{':
case'[':
case'(':stack.push(sign);break;
case'}':if(stack.empty()||'{'!=stack.pop())
{cout<<"no match"<<endl;state=1;break;}
case']':if(stack.empty()||'{['!=stack.pop())
{cout<<"no match"<<endl;state=1break;}
case')':if(stack.empty()||'('!=stack.pop())
{cout<<"no match"<<endl;break;}
default:break;
}
}while (sign!='/n')
if (stack.empty()&&state==0);
cout<<"match!!!"<<endl;
else
cout<<"no match"<<endl;
}