浙大版《数据结构学习与实验指导(第2版)》-进阶实验8-2.2 特殊堆栈-What are you Nong Sha Li?
Posted Tisfy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浙大版《数据结构学习与实验指导(第2版)》-进阶实验8-2.2 特殊堆栈-What are you Nong Sha Li?相关的知识,希望对你有一定的参考价值。
What are you Nong Sha Li?
时间限制:0.4秒
空间限制:64M
题目描述
堆栈是一种经典的后进先出的线性结构,通常有入栈
(Push)和出栈
(Pop)两个操作。
某人觉得这样不够好玩,就自己模拟了一个栈,并加上了取中值
(GetMedia)操作。
即,返回(不取出)栈中所有元素的最中间那个元素。若最中间的元素有两个,则返回更靠前的那个。
输入描述
输入包括很多行( 行 数 ≤ 1 0 5 行数\\leq10^5 行数≤105),每行都是一个操作。
-
如果操作命令是
Push
,则后面会紧跟一个空格和数字 t ( 0 ≤ t ≤ 1 0 5 ) t(0\\leq t\\leq 10^5) t(0≤t≤105),表示要把 t t t入栈。如:Push 3
。 -
如果操作命令是
Pop
,则此行它后面什么都不会出现,表示要出栈一个元素。 -
如果操作命令是
GetMedia
,则此行它后面什么都不会出现,表示要返回栈中最中间的那个数。
数据保证每个操作命令不包含空格,即不会出现操作Get Media
等。
输出描述
符合上述3种描述的输入都是合法输入,但不一定是合法操作。例如在栈空时尝试Pop
命令就是非法的。
-
如果是
Push
命令,就把它后面的整数入栈。 -
如果是
Pop
命令,就出栈一个元素并输出。 -
如果是
GetMedia
命令,就输出中间的元素。
操作过程中若出现任何非法情况,则这个操作取消并输出What are you Nong Sha Li?
。
样例一
输入
Pop
Push 1
GetMedia
Push 2
GetMedia
Push 3
GetMedia
Pop
输出
What are you Nong Sha Li?
1
1
2
3
题目分析
用 1 0 5 10^5 105的数组就可以模拟。
用变量
index
记录数组中有多少个元素(初始值是 0 0 0),Push
就存入数组并且index+1
,Pop
就返回最后一个元素并且index-1
,GetMedia
就返回中间的元素(index-1)/2向下取整
。
Pop
或GetMedia
时若数组为空则是非法。
注意事项
GetMedia
的时候若栈为空也是非法题目说操作命令不包含空格(不会出现
Get Media
),但是没说不会出现其他命令(比如Clear
)。如果出现了描述的3种操以外的操作也应被认为是非法。
AC代码
#include <bits/stdc++.h>
using namespace std;
#define mem(a) memset(a, 0, sizeof(a))
#define dbg(x) cout << #x << " = " << x << endl
#define fi(i, l, r) for (int i = l; i < r; i++)
#define cd(a) scanf("%d", &a)
typedef long long ll;
int a[100010];
int main()
{
int index=0;
string s;
while(cin>>s)
{
if(s=="Pop")
{
if(index<=0)
{
puts("What are you Nong Sha Li?");
}
else
{
printf("%d\\n",a[--index]);
}
}
else if(s=="GetMedia")
{
if(index<=0)
{
puts("What are you Nong Sha Li?");
}
else
{
printf("%d\\n",a[(index-1)/2]);
}
}
else if(s=="Push")
{
int n;
cin>>n;
a[index++]=n;
}
else
{
puts("What are you Nong Sha Li?");
}
}
return 0;
}
原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/119854214
以上是关于浙大版《数据结构学习与实验指导(第2版)》-进阶实验8-2.2 特殊堆栈-What are you Nong Sha Li?的主要内容,如果未能解决你的问题,请参考以下文章
快速排序-浙大版《数据结构学习与实验指导(第2版)》-基础实验7-2.3:德才论
计算机操作系统实验指导 (第3版) 第四篇 操作系统学习指导和习题解析 第19章:调度与死锁 习题和答案