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; }