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

  

原文地址:https://www.cnblogs.com/Rosanna/p/3438691.html