c++代码实现栈顺序判断
时间: 2024-10-27 07:11:57 浏览: 7
C++模板实现顺序栈
5星 · 资源好评率100%
在C++中,你可以使用标准库中的`stack`容器来实现栈的顺序判断。首先,你需要包含头文件`<stack>`,然后创建一个`std::stack<int>`来存储整数元素。如果你想判断一个序列是否能通过栈的操作(如入栈、出栈)得到,可以依次将序列的元素压入栈,然后再检查剩余的元素是否等于栈顶元素的数量。
下面是一个简单的示例:
```cpp
#include <iostream>
#include <stack>
bool isStackOrder(int* arr, int n) {
std::stack<int> s;
for (int i = 0; i < n; ++i) {
if (i > 0 && arr[i] < arr[i - 1]) { // 如果当前元素小于前一个元素,说明不是按照顺序入栈的
return false;
}
s.push(arr[i]); // 入栈操作
}
// 检查剩余元素是否等于栈顶元素的数量
for (int i = n - 1; i >= 0; --i) {
if (arr[i] != s.top()) {
return false;
}
s.pop(); // 出栈操作
}
return true; // 如果所有元素都已检查并全部出栈,说明是按照顺序入栈的
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
bool result = isStackOrder(arr, n);
if (result) {
std::cout << "序列可以通过栈的顺序操作得到";
} else {
std::cout << "序列不能通过栈的顺序操作得到";
}
return 0;
}
```
阅读全文