// 是否是按顺序出栈
#include <iostream>
#include <stack>
#include <queue>
using namespace std;
bool check_is_valid_order(queue<int> &order)
{
stack<int> S; // 临时栈
int n = order.size();
for (int i = 1; i <= n; i++) // 将1, 2, .., n依次压入临时栈
{
S.push(i);
while (!S.empty() && order.front() == S.top())
{
// S 栈不为空,请且队首元素和栈顶元素相等
// 同时弹出
S.pop();
order.pop();
}
}
if (!S.empty())
return false;
return true;
}
int main()
{
queue<int> Q;
Q.push(3);
Q.push(1);
Q.push(2);
Q.push(5);
Q.push(4);
bool res = check_is_valid_order(Q);
cout << res << endl;
return 0;
}
网友评论