#include<iostream>
using namespace std;
#include<stack>
#include<string.h>
class IsTrueSeq
{
public:
IsTrueSeq():str1(NULL),str2(NULL){}
bool JudgeLegal(char *push_str,char *pop_str)
{
if(push_str==NULL || pop_str==NULL)
return false;
else if(strlen(push_str)!=strlen(pop_str)) //长度不等,直接返回false
return false;
else
{
stack<int> temp;
int j=0;
for(int i=0;i<strlen(push_str);i++)
{
temp.push(push_str[i]);
while(!temp.empty() && temp.top()==pop_str[j])
{
temp.pop();
j++;
}
}
if(temp.size()>0)
return false;
else
return true;
}
}
private:
char *str1;
char *str2;
};
//功能测试
void main()
{
IsTrueSeq s;
char *str1="12345";
char *str2="21543";
bool a=s.JudgeLegal(str1,str2);
if(a)
cout<<"合法的出栈顺序"<<endl;
else
cout<<"不是合法的出栈顺序"<<endl;
}