如何判断一个序列可能是另外一个序列的压入弹出序列呢?
#include <iostream>
#include <stack>
#include <vector>
using namespace std;
/* a是入栈序列,b是出栈序列 */
bool isPopQueue(int* a, int* b, int len)
{
/* 入参判断 */
if(a == NULL || b == NULL || len <= 0)
return false;
int i = 0, j = 0;
stack<int> st;
/* 循环去判断 */
while(i < len || j < len)
{
if(i < len)
{
while(a[i] != b[j] && i < len)
{
st.push(a[i]);
i++;
}
cout << "i = " << i << ", j = " << j << endl;
}
if(j < len)
{
if(i < len && a[i] == b[j])
{
i++;
j++;
}
else if(!st.empty())
{
if(st.top() == b[j])
{
j++;
st.pop();
}
else
{
return false;
}
}
else
{
return false;
}
}
}
return true;
}
int main()
{
int a[] = {1,2,3,4,5};
int b[] = {4,5,3,1,1};
if(isPopQueue(a,b,5) == true)
{
cout << "good" << endl;
}
else
{
cout << "poor" << endl;
}
return 0;
}