题解: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;
}