c++代码实现判断出栈序列是不是正确的,
时间: 2024-10-27 21:11:32 浏览: 17
给定进栈顺序,判断一个序列是否为正确的出栈顺序
4星 · 用户满意度95%
在 C++ 中,我们可以使用栈(Stack)数据结构来模拟出栈操作,并通过迭代遍历列表的方式检查给定的出栈序列是否合法。假设我们有一个整数数组 `pushed` 表示元素入栈顺序,我们需要检查它是否可以按照这个顺序依次出栈。以下是一个简单的实现:
```cpp
#include <iostream>
#include <stack>
#include <vector>
bool isValidSequence(std::vector<int>& pushed) {
std::stack<int> stack;
for (int num : pushed) {
// 入栈元素
stack.push(num);
// 出栈检查
if (!stack.empty() && stack.top() != num) {
return false; // 出栈的元素与上一个出栈或当前入栈的元素不符
}
}
// 如果所有元素都已入栈并出栈,则序列有效
return true;
}
int main() {
std::vector<int> pushed = {1, 2, 3, 6, 4, 5}; // 测试序列
if (isValidSequence(pushed)) {
std::cout << "出栈序列是正确的。\n";
} else {
std::cout << "出栈序列不是正确的。\n";
}
return 0;
}
```
在这个代码中,`isValidSequence` 函数会返回一个布尔值,表示输入的出栈序列是否有效。如果栈顶元素与当前出栈序列中的元素不匹配,函数就会立即返回 `false`。如果遍历完成后所有元素都成功出栈,那么返回 `true`。
阅读全文