如:入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1),则合法。
入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1),则不合法。
template<class T>
class Legitimacy
{
public:
bool Legitimacy(const T* cur, const T* dest, int csize,int dsize)
{
assert(cur);
assert(dest);
if (dsize!=csize || dsize==0)
{
return false;
}
while (*dest!=0 && *cur!=0)
{
s.push(*dest++);
if (s.top()!=*cur)
{
s.push(*dest++);
}
while (!s.empty() && s.top()==*cur)
{
s.pop();
cur++;
}
}
return s.empty() ? true : false;
}
private:
stack<T> s;
};