题解:UVA12207 That is Your Queue

· · 题解

题目思路

这是一道链表板子题,纯模拟。 \ 题目中有两种操作,分别是 N 操作和 E 操作。 \ 对于题目中的 N 操作,先在链表尾部加入链表开头元素,然后移除链表开头元素。\ 对于 E 操作,可以使用链表的删除和移动函数,先将元素加到队首,然后删除这个元素。

AC Code

#include<bits/stdc++.h>
using namespace std;
deque<int>q;
int n,m,cnt;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    while(cin>>n>>m)
    {
        if(n==0&&m==0)break;
        cnt++;
        q.clear();
        cout<<"Case "<<cnt<<':'<<'\n';
        for(int i=1;i<=min(n,m);i++)q.push_back(i);
        for(int i=1;i<=m;i++)
        {
            char opt;
            cin>>opt;
            if(opt=='N')
            {
                int res=q.front();
                cout<<res<<'\n';
                q.push_back(res);
                q.pop_front();
            }
            else if(opt=='E')
            {
                cin>>n;
                q.erase(remove(q.begin(),q.end(),n),q.end());                        
                q.push_front(n);
            }
        }
    }
    return 0;
}