📅  最后修改于: 2023-12-03 15:24:08.062000             🧑  作者: Mango
在 C++ 中,STL(Standard Template Library,标准模板库)是一个十分强大的工具,它提供了许多容器,可以帮助我们快速实现各种数据结构,其中就包括堆栈(Stack)。
堆栈是一种线性数据结构,具有“先进后出”的特点,也就是说我们只能在栈顶进行插入和删除操作,因此在实现堆栈时可以采用列表(List)来作为底层容器。
首先我们需要引入两个头文件,一个是 <stack>
,另一个是 <list>
。
#include <stack>
#include <list>
在 C++ STL 中,我们可以使用模板类 std::stack
来实现堆栈,其中需要指定底层容器的类型。
std::stack<int, std::list<int>> myStack;
上述定义了一个整型堆栈,底层容器类型为 std::list<int>
。
我们可以使用 push()
函数将元素压入堆栈中。
myStack.push(1);
myStack.push(2);
myStack.push(3);
上述代码依次将整数 1,2,3 压入堆栈中。
我们可以使用 top()
函数来访问栈顶元素,但是需要在访问之前先判断堆栈是否为空。
if (!myStack.empty()) {
int topElement = myStack.top();
std::cout << "Top element: " << topElement << std::endl;
}
上述代码先判断了堆栈是否为空,如果不为空则访问栈顶元素并输出其值。
我们可以使用 pop()
函数将栈顶元素弹出堆栈。
if (!myStack.empty()) {
myStack.pop();
}
上述代码先判断了堆栈是否为空,如果不为空则弹出栈顶元素。
我们可以使用 empty()
函数来判断堆栈是否为空。
if (myStack.empty()) {
std::cout << "Stack is empty." << std::endl;
}
我们可以使用 size()
函数来获取堆栈的大小。
std::cout << "Stack size: " << myStack.size() << std::endl;
下面是一个完整的使用列表实现堆栈的代码示例。
#include <iostream>
#include <stack>
#include <list>
int main() {
std::stack<int, std::list<int>> myStack;
myStack.push(1);
myStack.push(2);
myStack.push(3);
if (!myStack.empty()) {
int topElement = myStack.top();
std::cout << "Top element: " << topElement << std::endl;
}
if (!myStack.empty()) {
myStack.pop();
}
if (myStack.empty()) {
std::cout << "Stack is empty." << std::endl;
}
std::cout << "Stack size: " << myStack.size() << std::endl;
return 0;
}
使用 C++ STL 中的列表实现堆栈可以大大简化代码的编写,使堆栈的操作更加安全和高效。我们可以使用 std::stack
类来定义堆栈,并使用 std::list
类型的对象来作为底层容器,然后通过 push()
、pop()
、top()
、empty()
和 size()
等函数来实现对堆栈的操作。