#STACK001. 栈的逆序输出

栈的逆序输出

栈的逆序输出

题目背景

栈是一种遵循“后进先出”(LIFO)原则的数据结构。元素只能从栈顶进入,也只能从栈顶离开。

本题用于练习 C++ STL 中 stack 的基本操作:

  • push():把元素压入栈顶;
  • top():读取栈顶元素;
  • pop():删除栈顶元素;
  • empty():判断栈是否为空。

题目描述

给定 nn 个整数,请将它们依次压入栈中,然后按照出栈顺序输出所有整数。

也就是说,你需要将输入的 nn 个整数逆序输出

例如,依次输入:

10 20 30

三个数字依次入栈后,3030 位于栈顶,因此出栈顺序为:

30 20 10

输入格式

第一行输入一个整数 nn,表示整数的数量。

第二行输入 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n

输出格式

输出一行,共 nn 个整数,表示这些整数的逆序结果。

相邻两个整数之间用一个空格分隔,行末可以有多余空格。

输入输出样例

样例 1

5
1 2 3 4 5
5 4 3 2 1

样例 2

6
10 8 10 3 7 2
2 7 3 10 8 10

数据范围

对于全部测试数据:

  • 1n1000001 \le n \le 100000
  • 109ai109-10^9 \le a_i \le 10^9

提示

可以按照下面的步骤完成:

  1. 定义一个 stack<int>
  2. 使用 push() 将所有整数依次压入栈中;
  3. 当栈不为空时,先使用 top() 输出栈顶元素,再使用 pop() 删除栈顶元素。

请注意,pop() 只负责删除栈顶元素,不会返回被删除的值。

错误写法:

int x = s.pop();

正确写法:

int x = s.top();
s.pop();

来源

数据结构课堂练习——栈的基本操作