#include<bits/stdc++.h>
using namespace std;
const int N=20005;
int main()
{
int queue_[N],error[N];
char str[5];
int n,data;
int mid=10000,l=mid,r=mid,k=0,flag=0; //双向队列数组模拟,用中值代表起始位置,用r,l代表右边和左边,fllag的作用有确定起始位置,还有错误的判断
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>str;
if(strcmp(str,"LIN")==0)
{
cin>>data;
if(flag==0)
{
flag=1;
queue_[l]=data;
}
else
queue_[--l]=data;
}
else if(strcmp(str,"RIN")==0)
{
cin>>data;
if(flag==0)
{
flag=1;
queue_[r]=data;
}
else
queue_[++r]=data;
}
else if(strcmp(str,"LOUT")==0)
{
if(flag==0)
error[++k]=i;
else if(l<=r)
l++;
else if(l>r)
error[++k]=i;
}
else if(strcmp(str,"ROUT")==0)
{
if(flag==0)
error[++k]=i;
else if(r>=l)
r--;
else if(r<l)
error[++k]=i;
}
}
for(int i=l;i<=r;i++)
{
if(i==r)
cout<<queue_[i]<<endl;
else
cout<<queue_[i]<<" ";
}
if(k)
{
for(int i=1;i<=k;i++)
cout<<error[i]<<" "<<"ERROR"<<endl;
}
return 0;
}
//又学到了一个知识点,祝看到此篇博客的人越努力,越幸运
1466双向队列SDUT
猜你喜欢
转载自blog.csdn.net/weixin_43824158/article/details/85058727
今日推荐
周排行