思路:
- 把停车场设为栈,便道设为队列,使用string存储命令和车牌号
问题:
- 第一次RTE:队列越界,因为没有判断队列空和队列最大值
- 多组输入: while(~scanf("%d",&n)) 和 while(scanf("%d",&n)!=EOF) 同样作用
- 关于Error的输出:要等到所有输入都结束之后才输出error,而不是输出error后就结束程序
AC
#include <iostream>
#include <cstdio>
#include<stack>
#include<queue>
#include<string>
using namespace std;
int main(){
int m,n;
string order,number;
while(scanf("%d %d",&n,&m)!=EOF){
stack<string> s;
queue<string> q;
int flag=0;
while(m--){
cin>>order;
if(order=="Add"){
cin>>number;
if(s.size()<n){
s.push(number);
}
else{
if(q.size()<1000000)
q.push(number);
}
}
else if(order=="Del"){
if(!s.empty()){
s.pop();
if(!q.empty()){
s.push(q.front());
q.pop();
}
}
else{
flag=1;
}
}
else if(order=="Out"){
if(!q.empty()) q.pop();
else{
flag=1;
}
}
}
if(flag==1) cout <<"Error"<<endl;
else {
while(!s.empty()){
cout << s.top()<<endl;
s.pop();
}
}
}
return 0;
}