#include"Stack.h"
using namespace std;
bool parent(const char exp[], int lo, int hi)
{
Stack<char>S;
for (int i = lo; i <= hi; i++)
{
switch (exp[i])
{
case '(':
case '[':
case '{':
case '<':
case '《':
{
S.push(exp[i]);
break;
}
case '》':
{
if ((S.empty()) || '《' != S.pop())
{
return false;
}
break;
}
case '>':
{
if ((S.empty()) || '<' != S.pop())
{
return false;
}
break;
}
case ')':
{
if ((S.empty()) || '(' != S.pop())
{
return false;
}
break;
}
case ']':
{
if ((S.empty()) || '[' != S.pop())
{
return false;
}
break;
}
case '}':
{
if ((S.empty()) || '{' != S.pop())
{
return false;
}
break;
}
default:
break;
}
}
return S.empty();
}
int main()
{
const char *s = "()()()<><><><>《》《》";
string res = (parent(s, 0, 15) == true ? "matched" : "not matched");
cout<<(res);
system("pause");
return 0;
}