在这篇博客中,我们将详细介绍栈(Stack)这一重要的数据结构,包括其基本概念、常用操作、C++ 中的实现,以及一些实际应用。
什么是栈?
栈是一种数据结构,它遵循“后进先出”(LIFO - Last In, First Out)的原则。栈就像是一叠盘子,你只能从最上面拿盘子,也只能在最上面放盘子。栈的这一特性使其在很多场景中非常有用,例如递归、回溯算法和表达式计算等。
栈的常用操作
在 C++ 中,我们通常使用 std::stack
(定义在 <stack>
头文件中)来实现栈。以下是一些常用操作:
1. 创建栈
#include <stack>
#include <iostream>
std::stack<int> myStack;
这行代码创建了一个存储整数类型的栈。
2. push 操作
将元素添加到栈的顶部。
myStack.push(10);
myStack.push(20);
myStack.push(30);
这几行代码将元素 10
、20
和 30
依次推入栈中,其真实存储结构如下:
3. top 操作
访问栈顶部的元素,但不移除它。
std::cout << "Top element: " << myStack.top() << std::endl;
这行代码访问栈顶元素,结果为 30
。
4. pop 操作
移除栈顶部的元素。
myStack.pop();
这行代码移除栈顶元素。
5. size 操作
返回栈中的元素个数。
std::cout << "Stack size: " << myStack.size<