const int MaxLength=100;
void PrintMatchedPairs(char *expr)
{
Stack<int> s(MaxLength);
int j, length=strlen(expr);
for(int i=1; i<=length; i++)
{
if(expr[i-1]=='(')
s.Add(i);
else if(expr[i-1]==')')
{
s.Delete(j);
cout<<j<<' '<<i<<endl;
}
}
// 堆栈中所剩下的(都是未匹配的
while(!s.IsEmpty())
{
s.Delete(j);
cout<<"No match for left parenthesis at" <<j<<endl;
}
}
Ref:<<数据结构,算法与应用>>P169~170