Menu
CoddyTech

栈

Coddy C++ 标准模板库 课程的第 10 课,共 23 课。

在这一章里,你将学习容器适配器。你将学习栈、队列和优先队列。


C++ 的栈是一种基于 LIFO (后进先出)原则的数据结构。这意味着,最后添加到栈中的元素会最先被移除,而最先添加到栈中的元素最后才能访问(这和叠盘子或叠煎饼很像。叠盘子时,你不能拿到最底下、最先放进去的盘子,必须先拿最上面、最后放进去的盘子)。


stack<dataType> stackName;

要在 C++ 中创建栈,首先需要在 C++ 文件顶部用 #include <stack> 包含 stack 头文件。 
然后,我们可以像下面这样声明一个栈变量。

stack<int> number_stack = {1, 2, 3};

那么,如何向栈中添加元素呢?我们使用 push() 方法。

stack<int> number_stack;
number_stack.push(1);
number_stack.push(2);
...

这样,我们就可以向栈中添加新元素。


此外,我们还需要将元素显示在屏幕上。我们使用 top() 方法来实现,它会返回栈顶的最后一个值。

cout << number_stack.top();
Output:
2

但是,如果我们现在一直将 top() 的结果输出到屏幕上,就会一直得到最后一个元素,在这个例子中是 2。因此,我们需要一种从栈顶移除元素的方法。为此,我们使用 pop() 方法,它会移除栈顶的最后一个元素。

cout << number_stack.top() << endl;
number_stack.pop();
cout << number_stack.top();
Output: 
2
1

总之,栈这种数据结构在 C++、编程以及竞赛编程中都非常实用。它的关键特点是遵循后进先出原则。


栈的方法

方法功能
size()返回栈中元素的数量
empty()如果栈为空,则返回 true;否则返回 false
swap()交换一个栈与另一个栈的内容
challenge icon

挑战

简单

给定从输入中读取的数字 N。接下来的 N 行中,每行有一个数字。 
使用栈输出输入的所有数字,但要从最后一个数字开始,按逆序输出。

 

Input
5
1
2
3
4
5
Output
5
4
3
2
1

亲手试试

#include <stack>
#include <iostream>

using namespace std;

int main()
{
    // Enter your code here

    return 0;
}

C++ 标准模板库中的所有课

自己练习: C++ 在线编译器