模拟栈如何改写为长尾词?

2026-04-12 04:052阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计486个文字,预计阅读时间需要2分钟。

模拟栈如何改写为长尾词?

模拟栈如何改写为长尾词?

题目

实现一个栈,栈初始为空,支持四种操作:

pus**粗体**h x – 向栈顶插入一个数 $x$; pop – 从栈顶弹出一个数; empty – 判断栈是否为空; query – 查询栈顶元素。 现在要对栈进行 $M$ 个操作,其中的每个操作 $3$ 和操作 $4$ 都要输出相应的结果。

输入格式 第一行包含整数 $M$,表示操作次数。

接下来 $M$ 行,每行包含一个操作命令,操作命令为 push x,pop,empty,query 中的一种。

输出格式 对于每个 emptyquery 操作都要输出一个查询结果,每个结果占一行。

其中,empty 操作的查询结果为 YESNOquery 操作的查询结果为一个整数,表示栈顶元素的值。

数据范围 $1≤M≤100000,1≤x≤109$

所有操作保证合法。

输入样例:

10 push 5 query push 6 pop query pop empty push 4 query empty

输出样例:

5 5 YES 4 NO

思路

idx来存储栈顶的位置

  1. idx为$0$, 表明栈空
  2. idx对应的stk[idx]为栈顶值
  3. popidx --
  4. pushstk[ ++ idx] = x

代码

#include <iostream> using namespace std; const int N = 100010; int m, x, stk[N], idx; int main() { idx = 0; cin >> m; while (m -- ) { string s; cin >> s; if (s == "push") { cin >> x; stk[++ idx] = x; } else if (s == "pop") idx --; else if (s == "empty") cout << (idx ? "NO" : "YES") << endl; else cout << stk[idx] << endl; } return 0; }

本文共计486个文字,预计阅读时间需要2分钟。

模拟栈如何改写为长尾词?

模拟栈如何改写为长尾词?

题目

实现一个栈,栈初始为空,支持四种操作:

pus**粗体**h x – 向栈顶插入一个数 $x$; pop – 从栈顶弹出一个数; empty – 判断栈是否为空; query – 查询栈顶元素。 现在要对栈进行 $M$ 个操作,其中的每个操作 $3$ 和操作 $4$ 都要输出相应的结果。

输入格式 第一行包含整数 $M$,表示操作次数。

接下来 $M$ 行,每行包含一个操作命令,操作命令为 push x,pop,empty,query 中的一种。

输出格式 对于每个 emptyquery 操作都要输出一个查询结果,每个结果占一行。

其中,empty 操作的查询结果为 YESNOquery 操作的查询结果为一个整数,表示栈顶元素的值。

数据范围 $1≤M≤100000,1≤x≤109$

所有操作保证合法。

输入样例:

10 push 5 query push 6 pop query pop empty push 4 query empty

输出样例:

5 5 YES 4 NO

思路

idx来存储栈顶的位置

  1. idx为$0$, 表明栈空
  2. idx对应的stk[idx]为栈顶值
  3. popidx --
  4. pushstk[ ++ idx] = x

代码

#include <iostream> using namespace std; const int N = 100010; int m, x, stk[N], idx; int main() { idx = 0; cin >> m; while (m -- ) { string s; cin >> s; if (s == "push") { cin >> x; stk[++ idx] = x; } else if (s == "pop") idx --; else if (s == "empty") cout << (idx ? "NO" : "YES") << endl; else cout << stk[idx] << endl; } return 0; }