#include<iostream>
#include<stack>
using namespace std;
int pipei(char *str){
int index=0;
char c;
stack<char> s;
s.push('#');//作为最后一个#的匹配
while((c=str[index++])!='\0'){
switch(c){
case '{':
s.push(c);
break;
case '}':
if(s.top()=='{')s.pop();
else {
cout<<index<<"的位置上的'}'不匹配与前面的字符'"<<s.top()<<"'不匹配"<<endl;
return 0;
}break;
case '[':
s.push(c);
break;
case ']':
if(s.top()=='[')s.pop();
else {
cout<<index<<"的位置上的']'不匹配与前面的字符'"<<s.top()<<"'不匹配"<<endl;
return 0;
}break;
case '(':
s.push(c);
break;
case ')':
if(s.top()=='(')s.pop();
else {
cout<<index<<"的位置上的')'不匹配与前面的字符'"<<s.top()<<"'不匹配"<<endl;
return 0;
}break;
case '#':
if(s.top()=='#') s.pop();
else {
cout<<index<<"的位置上的'#'不匹配与前面的字符'"<<s.top()<<"'不匹配"<<endl;
return 0;
}break;
}
}
cout<<"括号匹配完成"<<endl;
return 1;
}
int main()
{
stack<char> s;
char *str="{[()}]}#";//以#为结束条件
pipei(str);
system("pause");
return 0;
}