2023-会漏的栈
描述
从前从前,有一个容量为K的栈...容量为K的意思是指,如果该栈里已经有K个元素了,现在还要再压一个元素x进去,则原栈底部的元素就会消失,然后就有一个空余的空间来把x压进栈里面。 例如K = 3,原栈从底部到顶部的元素分别为1,2,3,现在要压4进去,则底部的1会消失,2往下掉变成底部元素,3也往下掉,最后4压进来。整个栈的元素自底向顶序列就变成2,3,4.
so, 现在给该容器的容量K,和m个操作序列,操作分两种: <1> push x 把x压入栈,x < 2^32 <2> pop 栈顶元素出栈 对于每个<2>操作,输出出栈的元素,若在操作前栈就已经为空,则输出"Empty!"(不包含引号).
//如果不知道什么是栈的话,自行搜索...如有不便,敬请原谅-_-
输入
第一行两个个整数K, m (1 <= K <= 100, 1 <= m <=10000) 接下来m行,每行表一个操作,如上所述。
输出
对于每个pop操作,输出其结果
样例输入
1 5
push 3
push 2
pop
push 4
pop
样例输出
2
4
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
int *a=new int[n];
int size=0;
while(m--)
{
string ch;
int x,i;
cin>>ch;
if(ch=="push")
{
cin>>x;
for(i=0;i<n;i++)
{
a[i]=a[i+1];
}
a[n-1]=x;
if(size<n) size++;
}
if(ch=="pop")
{
if(size==0) cout<<"Empty!"<<endl;
else
{
cout<<a[n-1]<<endl;
for(i=n-1;i>=0;i--)
{
a[i]=a[i-1];
}
size--;
}
}
}
delete []a;
return 0;
}

浙公网安备 33010602011771号