已知n辆列车的编号为1~n,在栈式结构的站台,进站顺序为1,2,…,n。c++编程实现:给定一个出栈序列,判断是否合法。
时间: 2024-10-09 10:06:21 浏览: 38
在 C++ 中,你可以使用栈这种数据结构来模拟列车的上车和下车过程。首先,你需要定义一个函数,接受一个整数数组作为输入,表示列车的出栈序列。函数的主要步骤如下:
1. 初始化一个空栈 `stack`。
2. 遍历出栈序列,对于每个元素 `num`:
a. 如果栈为空,或者栈顶元素大于 `num`,将 `num` 入栈。
b. 否则,说明栈顶列车应该在当前列车之前出栈,这是一个非法操作。
3. 遍历结束后,如果栈为空,那么序列是合法的;否则,它是非法的,因为还有列车未出栈。
以下是一个简单的 C++ 实现:
```cpp
#include <vector>
#include <stack>
bool isValid(int* p, int n) {
std::stack<int> stack;
for (int i = 0; i < n; ++i) {
if (stack.empty() || stack.top() > p[i]) {
stack.push(p[i]);
} else {
return false;
}
}
return stack.empty();
}
```
在这个代码中,`p` 是输入的列车出栈序列,`n` 是序列的长度。函数 `isValid` 返回 `true` 表示序列合法,`false` 表示非法。
阅读全文